Win32-DLL-Projekt in Win32-Konsolenanwendung via *.DEF mit VC++?!



  • Hallo Leute,
    ich bin mir nicht ganz sicher, ob das hier richtig ist, ich habe keinen besseren Bereich gefunden, wo ich das hätte posten können.
    Also ich habe ein Win32-DLL Projekt angelegt und dafür auch eine kleine Funktion geschrieben:

    __declspec(dllexport) int Add(int a, int b)
    {
    return a + b;
    }
    

    der Projektmappe habe ich dann noch eine Win32 Konsolenanwendung hinzugefügt und folgendes in die Quelldatei geschrieben:

    #include <iostream>
    
    using namespace std;
    
    __declspec(dllimport) int Add(int, int);
    
    int main()
    {
    cout << Add(2, 3) << endl;
    return 0;
    }
    

    Das habe ich ausgeführt, aber ich habe schnell gemerkt, dass das nicht ging. Also erstmal gesucht bis ich dann in den Eigenschaften des Exe Projekts einen Verweis auf das DLL Projekt hinzugefügt habe und es ging.

    Soweit so gut, ich habe allerdings auch gelesen, dass man das ganze unterfangen auch mit .DEF Dateien realisieren kann. Vielleicht kann jemand posten wie ich das mache? Würde mich sehr freuen. Wenn ich in der DEF Datei das alles eintrage, würde es dann den Verweis den ich in den Eigenschaften eingetragen habe überflüssig machen? Wenn nicht wie kann ich das machen?

    mfG CAres


  • Mod

    Nein es macht den Verweis nicht überflüssig.
    Eine DEF Datei erleichtert nur die Namensgebung der exportierten Funktionen.

    Die Def Datei wird angelegt Du schreibst in der EXPORTS Sektion einfach alle Namen der exportieren Funktionen untereinander.

    Wenn es um lösgelöste DLLs später geht dann genügt es die LIB Datei aus dem DLL Projekt in Deiner EXE bekannt zu machen. Der Verweis auf das DLL Projekt macht im Prinzip genau das gleiche.



  • Danke, es funktioniert. 😃

    Ich würde gerne auch die Version mit der losgelösten DLL realisieren, kann nicht schaden das auch zu wissen, denke ich 🙂 Könntest du mir sagen wie ich das bewerkstellige die LIB des DLL-Projekts in der EXE bekannt zu machen? Ich nutze übrigens Visual Studio 2010 Pro, für den Fall, dass die Tatsache für Einstellungen da relevant ist^^

    mfG CAres91


  • Mod

    Eiegntlich genügt es die LIB Datei in das andere Projekt zu ziehen. VS weiß dann schon was zu machen ist.

    Alternativ einfach die Lib Datei bei "Additional Libraries" in den Linker Optioen angeben.


Anmelden zum Antworten