DLL innerhalb DLL laden
-
Hallo,
ich versuche innerhalb einer DLL einer weitere DLL zu laden und auszuführen, allerdings erhalte ich bei LoadLibrary bisher kein gültiges Handle.
Ich habe nun schon einiges versucht-siehe auskommentierte Zeilen.
Das Ergebnis von LoadLibrary ist jedoch jedesmal 0.Die dll's habe ich auch schon in die entsprechenden Verzeichnisse kopiert (aktuelles, Debug, Debug-Dll Windows/System32 usw...
der Aufruf:
TError = this->execSecondTest("test_dpx_dll.dll");
und der Code...
TEST_ERROR CTestMax2Box::execSecondTest(CString sdllName) { HINSTANCE hDLL; TESTFUNC TestFunction; TEST_ERROR TError; hDLL = NULL; TestFunction = NULL; char cpDll[256]; // hDLL = LoadLibrary("test_dpx_dll.dll"); m_FlashCard.LittleHelper.Str2AChar(sdllName,cpDll,254); // hDLL = LoadLibrary((LPCTSTR) sdllName); hDLL = LoadLibrary(cpDll); if (hDLL != NULL) { TestFunction = (TESTFUNC)GetProcAddress(hDLL,"TestFunction"); if (!TestFunction) { m_pParam->m_Printf(m_pParam->m_hTesthandle,"No access to TestFunction!\n"); TError = TEST_CPU_ERROR; } else { //m_pTestThread=AfxBeginThread(StartTest,(void *)m_pCTest,THREAD_PRIORITY_NORMAL); TestFunction(m_pParam); TError = TEST_OK; } FreeLibrary(hDLL); } else { m_pParam->m_Printf(m_pParam->m_hTesthandle,"Could not open %s!\n",sdllName); TError = TEST_ABORT; } return TError; }
-
Ich würde es eigentlich fast ausschleßen, da das offensichtlich deine eigene DLL ist, die du auf deinem Entwicklungsrechner laden willst, aber: sind für diese DLL denn alle Abhängigkeiten erfüllt (=>depends.exe)?
EDIT: Übrigens solltest du nach LoadLibrary mal GetLastError ausführen!
-
Danke für die schnelle Antwort, leider komme ich noch nicht wirkliche weiter
GetLastError bringt mir den Code 126, was auch nur folgendes aussagt:
126 The specified module could not be found. ERROR_MOD_NOT_FOUND
Die DLLs sind beide eigene DLLs und lassen sich einzeln von der Haupt-Applikation ohne Problem laden.
Aber prinizipiell dürfte doch nichts dagegen sprechen innerhalb einer DLL eine andere zu laden - oder?
-
Übergib an LoadLibrary mal einen absoluten Pfad.
-
so, jetzt tuts - es waren doch noch ein paar Abhängigkeiten in der einen DLL, die nicht gefunden wurden.
Gruss&1000Thanks
-
Eine DLL in einer DLL zu laden ist OK, solange Du das nicht in DLLMain machst!