Olevariant и Dll

  • Автор темы Vendigo
  • Дата начала
V

Vendigo

#1
Проблема такая
Есть глобальная переменная Типа OleVariant и функция, инициализирующая эту переменную

Код:
var PCX:OleVariant;

function Initialize(Param:Pchar): Pchar;
begin
PCX:= CreateOleObject('cft.winpcx.1');
result:= '';
end;
В проекте(WinForm) все работает нормально, но когда компилю dll и вызываю эту функцию программа виснет.
Если сделать переменную локальной все работает нормально. То есть зависание судя по всему происходит при присвоении глобальной переменной ссылки, возвращаемой CreateOleObject.
Также пробовал хранить в глобальной переменной ссылка на сам интерфейс Dispatch
Код:
var PCX:IDispatch;
...
 

sinkopa

Well-known member
17.06.2009
344
4
#2
Проблема такая
Есть глобальная переменная Типа OleVariant и функция, инициализирующая эту переменную

Код:
var PCX:OleVariant;

function Initialize(Param:Pchar): Pchar;
begin
PCX:= CreateOleObject('cft.winpcx.1');
result:= '';
end;
В проекте(WinForm) все работает нормально, но когда компилю dll и вызываю эту функцию программа виснет.
Если сделать переменную локальной все работает нормально. То есть зависание судя по всему происходит при присвоении глобальной переменной ссылки, возвращаемой CreateOleObject.
Также пробовал хранить в глобальной переменной ссылка на сам интерфейс Dispatch
Код:
var PCX:IDispatch;
...
Мало информации...
Initialize это функция экспротируемая длл-кой? или просто внутри где-то юзается?
А var PCX вы пытаетесь приложению отдать для работы? или опять же для внутреннего (DLL) использования?
А кто такой cft.winpcx.1? может ему Окно нужно в качестве парента? для инициализации?
Или может это модальный объект?
А DLL у вас динамически грузится?