LoadLibrary aus der DLL heraus.



  • Hallo zusammen. bin gerade dabei, einen den Quellcode einer EXE in eine DLL umzubauen. In der EXE wurde mit LoadLibrary gearbeitet (nur dlls als Quelle, keine Lib). Das scheint jedoch in der DLL nicht mehr zu funktionieren.

    Gearbeitet wird unter Visual C++ 2008.

    Folgende Fehlermeldung erscheint:

    error C2664: 'LoadLibraryW': Konvertierung des Parameters 1 von 'const char [16]' in 'LPCWSTR' nicht möglich.
    Die Typen, auf die verwiesen wird, sind nicht verknüpft; die Konvertierung erfordert einen reinterpret_cast-Operator oder eine Typumwandlung im C- oder Funktionsformat.

    Auszug des Quelltextes:

    #include <string.h>
    #include <stdio.h>
    #include <windows.h>
    
    .
    .
    .
    
    extern "C" void __declspec(dllexport) __cdecl EXPORTNAME
    (float *a,int *b, char *c, char *d, char *e)
    
    {
    typedef void (_cdecl *MYPROC)(double*, double*); 
    
    HINSTANCE hinstlib_ctrl;
    
    MYPROC call_controller;
    
    hinstlib_ctrl = LoadLibrary("DLLNAME.dll"); // compiler ERROR in dieser Zeile
    
    //call_controller=(MYPROC)GetProcAddress(hinstlib_ct rl,"Controller"); 
    
    .
    .
    .
    

    Hat jemand einen Tipp?



  • C++ Grundwissen aneignen. Du verwendest die falschen Typen.



  • was mit stutzig macht ist aber,

    das selbst hinstlib_ctrl = LoadLibrary(_T("DLLNAME.dll")); bzw. LoadLibraryA( bzw. LoadLibraryW(L nicht funktionieren...



  • DampfHans schrieb:

    was mit stutzig macht ist aber,

    das selbst hinstlib_ctrl = LoadLibrary(_T("DLLNAME.dll")); bzw. LoadLibraryA( bzw. LoadLibraryW(L nicht funktionieren...

    Was heist nicht funktionieren, kommt der selbe Fehler vom Kompiler, ein anderer oder gar ein Laufzeitfehler?

    Denn entweder sollte LoadLibrary(L"dllname.dll"), LoadLibraryA("dllname.dll") gehen (sofern Du mit UNICODE-Flag kompilierst).

    Wenn Du auf Unicode verzichten kannst dann kannst Du auch ohne dieser kompilieren und dann sollte LoadLibrary("dllname.dll") ebenfalls gehen weil dann LoadLibraryA genommen wird (LoadLibrary selbst ist ja nur ein Macro).

    Gut Schuß
    VuuRWerK 😉


Anmelden zum Antworten