Привет
У меня есть COM-плагин на основе ATL и есть еще одна сторонняя библиотека, которую я хочу использовать. Это не COM dll, а реализовано в C ++.
подробности о сторонних dll:
Тип конфигурации = Динамическая библиотека (.dll)
Использование MFC = Использовать MFC в статической библиотеке
Использование ATL = не использовать ATL
Набор символов = использовать мульти-btye набор символов
CRL support = нет поддержки clr
подробности о проекте COM dll:
Тип конфигурации = Динамическая библиотека (.dll)
Использование MFC = Использовать MFC в общей библиотеке
Использование ATL = динамическая ссылка на ATL
Набор символов = использовать набор символов Unicode
CRL support = нет clr support
Это мой код
HRESULT FinalConstruct()
{
LPCWSTR libPath = _T("LicEnf.dll") ;
const char * clibPath = "LicEnf.dll" ;
SetLastError(0);
HMODULE hMod = LoadLibraryA(clibPath);
if(hMod==NULL)
{
LOG4CXX_TRACE(CALMLogger::GetModuleLogger(ModuleName),
_T("Could not load library:GetLastError() returned ") << GetLastError());
}
return S_OK;
}
FinalConstruct называется 3 раза. hMod всегда 0 и в файле журнала у меня есть
Не удалось загрузить библиотеку: GetLastError () вернул 183
Не удалось загрузить библиотеку: GetLastError () вернул 126
Не удалось загрузить библиотеку: GetLastError () вернул 126
где
-183 (0xB7) = ERROR_ALREADY_EXISTS
-126 (0x7E) = ERROR_MOD_NOT_FOUND
С другой стороны, если я вызываю этот код из другого тестового приложения, которое является обычным исполняемым файлом, loadLibrary работает нормально.
Есть ли какие-либо ограничения загрузки родной win32 dll из COM-dll и в чем здесь моя ошибка?
Спасибо