//в длл
extern "C" void __export __stdcall FirstLoad (TADOConnection *ADOConnection1)
{
TStartForm *StartForm = new TStartForm(NULL);
// можно прямо здесь OLE проинициализировать...
//или же даже в самом ехе-шнике
OleInitialize(NULL);
StartForm->ADOQuery1->Connection = ADOConnection1;
.....
}
// в ехе
dllp = LoadLibrary("init.dll");
void (__stdcall *FirstLoad)(TADOConnection *ADOConnection1);
if (dllp)
FirstLoad = (void __stdcall(*)(TADOConnection *ADOConnection1)) GetProcAddress(dllp, "FirstLoad");
if (FirstLoad)
FirstLoad (DM->ADOConnection1);
...
}
ADO + DLL
P.S. будет возможность - опишу ошибку поподробнее
EOleSysError: CoInitialize was not called.
Цитата: Washington
Кто-нибудь пробовал пользовать ADO из DLL? Дело в том, что я столкнулся с такой вот жестью: у мну есть дллка, внутри форма (знаю, что это нехорошо, некрасиво, неправильно и т.д., но так уж получилось), а на форме есть компоненты ADO. И вот в событии FormCreate происходит ошибка. Кто-нибудь сталкивался с чем-нибудь подобным?
P.S. будет возможность - опишу ошибку поподробнее
P.S. будет возможность - опишу ошибку поподробнее
Я передаю в ДЛЛ TADOConnection, расположенную в главном приложении, работает нормально.
Попробуй в FormCreate прописать перед АДО компонентом OleInitialize(NULL)
А если чуток подробнее - каким образом ты передаешь TADOConnection в дллку? А в FormCreate перед АДО - как можно что-то прописать?
Цитата: Washington
А если чуток подробнее - каким образом ты передаешь TADOConnection в дллку? А в FormCreate перед АДО - как можно что-то прописать?
на С++ только....
Код:
Вроде заработало, спасибки.