Haufen Fragen und keine Ahnung zu DLLs ...



  • In letzter Zeit habe ich ausschließlich in C# programmiert, wollte jetzt aber meiner ersten Programmiersprache C++ wieder mehr Zeit widmen und habe natürlich(!) als einfaches Wiedereinführungsprojekt eine DLL erstellen wollen, die ich vielleicht noch in ein bestehendes C#-Projekt einbinden kann. Doch da es (wie gesagt) eine Weile her ist, dass ich das letzte Mal in C++ programmiert habe, habe ich schon die Hälfte vergessen.

    Das hier ist meine Beispiel-DLL:

    #include <iostream>
    void __dcelspec(dllexport) PrintString(char* MyString){std::cout<<MyString<<'\n';std::cin.get();}
    

    Das hier die Schnittstelle (Deklaration, Einbindung und so weiter):

    void __dcelspec(dllimport) PrintString(char* MyString);
    
    int main()
    {
        PrintString("Juhu");
        return 0;
    }
    

    So funktioniert es aber nicht!

    Erstes Problem: Heißt es im DLL-Quellcode export oder import?
    Zweites Problem: Ich wußte mal, dass ich mittels einer pragma-Direktive die *.lib der DLL einbinden muss (korrigiert mich, wenn ich falsch liege). Aber ich habe vergessen, welche das ist, und die Syntax ebenso.
    Drittes Problem: Was mache ich, wenn ich das Ganze in eine Klasse verpacken will? Ich erinnere mich noch an:

    class __dcelspec(dllexport) MyClass
    {
    public:
        void __dcelspec(dllexport) PrintString(char* MyString){/*...*/}
    };
    

    , aber da kann ich mich auch kolossal irren. Ich verwende Visual Studio 2005.



  • 1. Es heißt __declspec ("Deckelspeck" 😉 ).

    2. In der DLL musst du dllexport nehmen (du willst die Funktion schließlich aus der DLL exportieren).

    3. Schau doch einfach mal auf msdn.com, da gibt es haufenweise Seiten zu DLLs.



  • _matze schrieb:

    1. Es heißt __declspec ("Deckelspeck" 😉 ).

    2. In der DLL musst du dllexport nehmen (du willst die Funktion schließlich aus der DLL exportieren).

    3. Schau doch einfach mal auf msdn.com, da gibt es haufenweise Seiten zu DLLs.

    1. Okay ...
    2. Okay ...
    3. Und kurz erklären geht nicht, was? Na gut, ich versuch's ...



  • ?.?.? schrieb:

    3. Und kurz erklären geht nicht, was?

    Nee, geht nicht, weil ich mit mit Klassen exportieren gar nicht auskenne und dir da höchstens gefährliches Halbwissen weitergeben könnte. 😉



  • _matze schrieb:

    ... und dir da höchstens gefährliches Halbwissen weitergeben könnte. 😉

    Versuchs!


Anmelden zum Antworten