Форум: "Базы";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
ВнизADOConnect := TADOConnection.Create(Application) -> EOleSysError Найти похожие ветки
← →
Sphinx © (2006-05-09 08:51) [0]В динамическую библиотеку (.dll) передаю
Application
из вызывающего приложения и пытаюсь создать экземпляр TADOConnection:ADOConnect := TADOConnection.Create(App);
на этой строке у меня почему-то выскакивает исключение EOleSysError с сообщение "не был произведен вызов CoInitialize" причем по русски (может имеет значение, Делфя сама - английская).
Если это же действие выполнить в приложении (.ехе) то ошибка не наблюдается, что я забыл учесть ???
Заранее признателен за ответ.
← →
Anatoly Podgoretsky © (2006-05-09 09:04) [1]Ну и почему бы не выполнить эту рекомендацию?
← →
Sphinx © (2006-05-09 09:14) [2]2 Anatoly Podgoretsky ©
Поверхностно пробежался по исходникам ADO и честно не понял какой именно интерфейс не вызывает CoInitialize. Дебагер ни в какую не заходит в эти исходники =(
Сейчас параллельно читаю и стараюсь понять как работает ADO, хотя бы в общих чертах и чем для него отличается .dll и .exe
Так то проблем вызвать - ни каких...но не могу найти для чего именно...
← →
Anatoly Podgoretsky © (2006-05-09 10:10) [3]"не был произведен вызов CoInitialize"
А нужно для того, чтобы был произведен вызов CoInitialize
← →
isasa © (2006-05-09 11:08) [4]Для "самодостаточности" DLL добавить в DllEntryPoint (DLL_PROCESS_ATTACH)
для
CoInitializeEx(nil, COINIT_APARTMENTTHREADED ); // STA модель
для
CoInitializeEx(nil, COINIT_MULTITHREADED ); // MTA модель
в DllEntryPoint (DLL_PROCESS_DETACH)
CoUninitialize;
в приложении, "на всякий случай" :)
...
CoInitFlags:= COINIT_APARTMENTTHREADED; // STA модель
//или CoInitFlags:= COINIT_MULTITHREADED; // MTA модель
Application.Initialize;
...
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.07.02;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c