DLL erstellen & testen - Hilfe für 1.Schritte



  • Servus,
    mein erster Post, mein erster Hilferuf, aber ists wenn man sich mit was neuem beschäftigt 🙂

    Habe ein Programm, dessen Funktionen ich ich eine DLL packen möchte.
    Hänge jetzt wahrscheinlich an einem Kindergartenproblem, aber ich komm nicht weiter und finde auch keine Infos....

    Habe bis jetzt folgendes gemacht.

    Über den MFC Assistenten eine DLL erstellt.
    Diese hat eine Funktion int TEST () die erstmal lediglich eine 1 zurück gibt (einfach mal um zu schauen, wie es geht)

    Dann habe ich noch einen DIALOG als eigenständiges Programm mit dem ich mein Test aus der DLL aufrufen möchte.

    Beim compilieren der DLL habe ich auch die EXE des Dialog angegeben, der startet dann auch.

    Jetzt wollte ich eben aus dem TestDialog die TEST-Funktion der DLL aufrufen,
    ich habe die .h der DLL included und die DLL unter PROJEKT-EINSTELLUNGEN-DEBUG mit dem Pfad angegeben, aber dem Test Dialog ist die Funktion Test() aus der DLL nicht bekannt.....

    Wer mag mir kurz auf die Sprünge helfen?
    Danke.



  • Wqs kommt denn genau für eine Fehlermeldung? Vermutlich hast Du noch vergessen die LIB zu linken...

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


  • muss ich da nur den Quelltext einfügen oder auch noch irgendwo in den Programm einstellungen (ähnlich wie die Angabe bei der DLL)

    als Fehlermeldung (mit und ohne der "#pragma..."-Zeile kommt.

    ...\JWF_LinTestDlg.cpp(186) : error C2065: 'Test' : nichtdeklarierter Bezeichner

    ist es ein Problem, dass die DLL in einem anderen Ordner liegt? Weil es sind ja 2 Projekte (DLL & TestProgramm)
    habe aber die Includes immer mit vollem Pfad angegeben...



  • Du hast vergessen die H-Datei der DLL einzubinden...



  • nein, leider ists das nicht, die .h war das erste was ich included habe..



  • Dann zeig doch mal den Code, sonst kommen wir hier nicht weiter... meine Kristallkugel hat heute den Dienst versagt...



  • naja, so viel Code gibts halt nicht...

    hier von der TestFunktion:

    // JWF_LinTestDlg.cpp : Implementierungsdatei
    .
    .
    #include "JWF_LinTest.h"
    #include "JWF_LinTestDlg.h"
    #pragma comment(lib, "D:\\programmierung\\JWF_LIN\\Release\\JWF_LIN.lib")
    #include "D:\programmierung\JWF_LIN\JWF_Lin.h"
    //#include "D:\\programmierung\\JWF_LIN\\JWF_Lin.h"
    .
    .
    void CJWF_LinTestDlg::OnInitialisieren() 
    {
    	int i =Test();	
    }
    

    habs mit beiden include versucht, bin mir nicht sicher wegen \ bzw \\ aber ich denke \\ ist richtig

    und dann hier von der .h DLL

    // JWF_LIN.h : Haupt-Header-Datei für die DLL JWF_LIN
    #include "resource.h"		// Hauptsymbole
    int Test();
    

    und das cpp File dazu

    // JWF_LIN.cpp : Legt die Initialisierungsroutinen für die DLL fest.
    //
    
    #include "stdafx.h"
    #include "JWF_LIN.h"
    .
    .
    #ifdef _DEBUG
    #define new DEBUG_NEW
    #undef THIS_FILE
    static char THIS_FILE[] = __FILE__;
    #endif
    .
    .
    int Test()
    {
       return 1;
    }
    


  • Naja... den Wizard hast Du aber nicht verwendet um die DLL zu erzeugen, oder?
    Du musst natürlich noch sagen, dass die Funktion Test in der DLL exportiert werden soll... (__declspec(dllexport) bzw bei Dir importiert werden soll (__dclspec(dllimport).

    Schau Dir am besten mal den Beispielcode an, den ein DLL Projekt anlegt...



  • doch doch mit dem wizard...

    aber den import-befehl hatte ich noch nicht, werd dann mal probieren...


Log in to reply