Salut J'ai un plugin COM basé sur ATL et il y a une autre bibliothèque tierce que je veux utiliser. Ce n'est pas COM dll et implémenté en C++.appel à LoadLibrary à partir du plug-in ATL COM
détails sur dll 3ème partie comme suit:
Type de configuration = Library (Dynamic .dll)
Utilisation du MFC = Utiliser MFC dans une bibliothèque statique
Utilisation d'ATL = non ATL à l'aide
jeu de caractères = utilisation de carbonisation multi-btye réglé
support CRL = no clr s upport
détails sur le projet dll COM comme suit:
Type de configuration = Library (Dynamic .dll)
Utilisation du MFC = Utiliser MFC dans une bibliothèque partagée
Utilisation des ATL = liaison dynamique à ATL
jeu de caractères unicode = utilisation de carbonisation mis
CRL supp ort = pas de support clr
Ceci est mon code
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 est appelé 3fois. hMod toujours 0 et le fichier journal j'ai
Impossible de charger la bibliothèque: GetLastError() retourné 183
Impossible de charger la bibliothèque: GetLastError() retourné 126
Impossible de charger la bibliothèque: GetLastError() retourné 126
où
-183 (0xB7) = ERROR_ALREADY_EXISTS
-126 (0x7E) = ERROR_MOD_NOT_FOUND
D'autre part, si j'appelle ce code d'une autre application de test qui est un fichier exe ordinaire, loadLibrary fonctionne très bien. Existe-t-il une limite au chargement d'une DLL win32 native à partir de COM-dll et quelle est mon erreur ici?
Merci
Quel EXE vous charge l'objet COM, et LicEnf.dll est-il dans le même répertoire que l'EXE?Avez-vous essayé d'utiliser un chemin complet vers LicEnf.dll? –