DLL-Export



  • Hallo zusammen,

    ich habe ein Problem mit der Übergabe eines Vektors bei der Verwendung einer DLL.

    Ich habe folgenden (DLL-)Code:

    //Inhalt von main
    vector<pair<string,int>> myvec;
    //Vektor füllen und probehalber ausgeben
    extdll(myvec);
    

    Dann habe ich folgende Funktion
    (header)

    extern "C" __declspec(dllexport)
    void extdll(vector<pair<string,int>> &);
    

    (cpp)

    __declspec(dllexport)void extdll(vector<pair<string,int>> &dllvec)
    {
    	//Ausgabe von bzw. Zugriff auf dllvec
    }
    

    Dabei habe ich nun das Problem, dass der Vektor dllvec immer "leer" ist. Warum ist das so?



  • STL Container über DLL Grenzen herumreichen ist eine ganz schlechte Idee. Ein DLL Interface beschränkt sich besser auf C Sprachmittel...

    Werden DLL und Anwendung mit dem selben Compiler kompiliert? Verwenden beide die selbe Runtime Library, wird die Runtime dynamisch oder statisch gelinked?



  • dot schrieb:

    STL Container über DLL Grenzen herumreichen ist eine ganz schlechte Idee. Ein DLL Interface beschränkt sich besser auf C Sprachmittel...

    OK, danke für die Info. Die Erfahrung mache ich gerade. Int- oder double-arrays sind z.B. kein Problem.

    dot schrieb:

    Werden DLL und Anwendung mit dem selben Compiler kompiliert?

    Ja.

    dot schrieb:

    Verwenden beide die selbe Runtime Library, wird die Runtime dynamisch oder statisch gelinked?

    Beide verwenden die gleiche Runtime Library dynamisch.



  • dot schrieb:

    STL Container über DLL Grenzen herumreichen ist eine ganz schlechte

    Wenn die DLL nur als Binary vorliget, ja. Wenn man aber den Sourcecode hat ist das kein Problem und auch besser als C-Sprachmittel.



  • manni66 schrieb:

    dot schrieb:

    STL Container über DLL Grenzen herumreichen ist eine ganz schlechte

    Wenn die DLL nur als Binary vorliget, ja. Wenn man aber den Sourcecode hat ist das kein Problem und auch besser als C-Sprachmittel.

    Der Sourcecode liegt vor, dennoch funktionieren die STL-Übergaben nicht.
    Ich habe jetzt den Inhalt des Vektors in arrays "verpackt" und es klappt.
    Vielen Dank für die Hilfen.




Anmelden zum Antworten