嗨 我有一个基于ATL的COM插件,还有另一个第三方库,我想要使用。它不是COM DLL,并用C++实现。从ATL COM插件调用LoadLibrary
对第三方的dll 详情如下:
配置类型=动态库文件(.dll)
静态库使用MFC =使用MFC的
使用ATL的=不使用ATL
字符集=使用多btye炭设置
CRL支持=无CLR小号在COM DLL项目upport
详情如下:
配置类型=动态库文件(.dll)
共享库
使用ATL的使用MFC =使用MFC的=动态链接到ATL
字符集=使用unicode字符集
CRL supp ORT =无CLR支持
这是我的代码
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
在如果我把这种代码从另一个测试应用程序,它是一个普通的exe文件另一方面,的LoadLibrary工作正常。 从COM-dll加载本机win32 dll是否有任何限制,以及我的错误是什么?
感谢
哪个EXE加载你的COM对象,并且是在与EXE相同的目录下的LicEnf.dll?您是否尝试过使用LicEnf.dll的完全限定路径? – 2010-10-20 12:39:30