dll einbinden -> Fehlermeldung



  • hi,
    wie vielleicht einige gemerk haben bin ich noch am lernen wie man so richtig programmiert . Dabei bin ich jetzt bei dlls, doch ich bekomme immer eine Fehlermeldung die ich nicht in der Lage bin zu interpretieren.
    und zwar folgendes:
    MathMachine.obj : error LNK2001: Nicht aufgelöstes externes Symbol "_TEST@4".
    C:\Dokumente und Einstellungen\as\Eigene Dateien\Visual Studio 2005\Projects\MathMachine\Release\MathMachine.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.

    fals es hilft mein Quellcode:
    dll.h :

    #ifdef __cplusplus
    #define EXPORT extern "C" __declspec (dllexport)
    #endif
    
    EXPORT BOOL CALLBACK TEST(HWND);
    

    aufruf im Programm sieht so aus: TEST(hwnd);

    dll.cpp :

    #include "stdafx.h"
    #include "dll.h"
    
    #ifdef _MANAGED
    #pragma managed(push, off)
    #endif
    
    int WINAPI DllMain( HINSTANCE hInstance,
                           DWORD  fdwReason,
                           PVOID pvReserved
    					 )
    {
        return TRUE;
    }
    
    EXPORT BOOL CALLBACK TEST(HWND hwnd)
    {
    	MessageBoxW(hwnd,TEXT("OK"),TEXT("OK"),NULL);
    	return 1;
    }
    
    #ifdef _MANAGED
    #pragma managed(pop)
    #endif
    

    ich hab dll.h in dll.cpp und in meinem Programm (wo ich auch die Fehlermeldung bekomme) includiert.

    großes Dankeschön im Voraus
    noha



  • Du brauchst noch die passende LIB dazu und dann

    #pragma comment(lib, "test.lib")
    


  • ich weis das das keine alzu schlaue Frage ist aber wo bekomm ich die Test.lib her oder muss ich einfach nur

    #pragma comment(lib, "test.lib")
    

    im Quellcode einfügen??



  • Du erzeugst doch eine EXE, oder (MathMachine.exe)?
    Diese EXE soll doch Deine DLL verwenden, oder?

    Also, beim Erstellen Deiner DLL wird auch eine LIB mit (i.d.R.) gleichem Namen erstellt. Diese musst Du nun zu Deiner EXE dazulinken, dass der Linker weiss, dass die Funktionen in der DLL liegen.



  • gut vielen dank das hab ich jetzt gefunden jetzt müsste ich nur noch wissen wie man in Visual c++ 2005 Express dazulinkt, das hab ich noch nie benötigt oder bewusst gemacht



  • noha_391 schrieb:

    gut vielen dank das hab ich jetzt gefunden jetzt müsste ich nur noch wissen wie man in Visual c++ 2005 Express dazulinkt, das hab ich noch nie benötigt oder bewusst gemacht

    #pragma comment(lib, "test.lib")
    

    !?
    Und dazu musst Du entweder den Pfad zu dieser Datei in die "Additional Include Directories" in den Projekteinstellungen hinzufpgen oder die LIB in das Verzeichnis des projekts legen.



  • gut ich hab

    #pragma comment(lib, "test.lib")
    

    eingefügt, test.lib ins Projektverzeichnis kopiert und klicke auf erstellen. Jetz mekkert Visual c++ : LINK : fatal error LNK1104: Datei "test.lib" kann nicht geöffnet werden.



  • Heisst Deine lib auch so?



  • eindeutig: Nein aber ich hab den Namen angepasst

    Jetzt geht es aber trotzdem. hab einfach mal auf neu erstellen statt auf erstellen geklickt, ka warum das nen Unterschied macht. Vielen Dank für deine Hilfe ( und Gedult 😃 ) jetzt weis ich wies funktioniert


Anmelden zum Antworten