Re[3]: Создание объекта COM в рантайме БЕЗ регистрации *.dll
От: Vi2 Удмуртия http://www.adem.ru
Дата: 21.11.07 13:09
Оценка:
Здравствуйте, NewEmptyName, Вы писали:

NEN>Сейчас декларация выглядит так:


Я так и думал.
NEN>Private Declare Function CreateObjectFromFile Lib "D:\WorkFlow\OrderFW\OrderFW\Debug\OrderFW.dll" (ByVal strLibrary As String, ByVal strClassName As String, ByVal ArrayDwordsPtr20 As Long) As Object


Т.е. считается, что функция возвращает IDispatch интерфейс, поэтому VB не проверяет и не запрашивает специально этот интерфейс. А Object и есть IDispatch*.

NEN>Функция выглядит так:


Неправильно. Лишняя косвенность не нужна, нужно правильно передать нужный интерфейс.

NEN>// IUnknown** __stdcall CreateObjectFromFile(LPCOLESTR strLibrary, LPCOLESTR strClassName, DWORD * ResPtr)
Vi2>>IDispatch* __stdcall CreateObjectFromFile(LPCOLESTR strLibrary, LPCOLESTR strClassName, DWORD * ResPtr)
NEN>{
NEN>//  IUnknown**    newobj =new IUnknown* ;// NULL;
Vi2>  IDispatch*    newobj = NULL;
NEN>//.......
NEN>//    CreateInstance (NULL,IID_IUnknown,(void**)newobj) ;
NEN>    CreateInstance (NULL,IID_IDispatch,(void**)newobj) ;
NEN>//.......  

NEN>  return (newobj);
NEN>}
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.