SOLVED - C-DLL in C# und C++-DLL in C#



  • Hallo.

    Ich habe eine DLL in C kompiliert und nutze deren Funktionen in C#. Funktioniert einwandfrei wie folgt:

    extern __declspec(dllexport) void Function(){
    /*...Code*/
    }
    
    [DllImport("TestDLL.dll", EntryPoint = "Function", CharSet = CharSet.Ansi, ExactSpelling = true, CallingConvention = CallingConvention.Cdecl)]
    public static extern void ExecuteDLLFunction();
    

    Wenn ich jetzt die DLL mit C++ kompiliere, in VS2015 kann man das unter Properties einstellen, erstellt er die DLL problemlos.

    Führe ich dann aber das Programm in C# aus, bekomme ich sofort eine Fehlermeldung und zwar:

    "Der Einstiegspunkt "Function" wurde nicht in der DLL gefunden."

    Stelle ich wieder auf C Kompiler um, kompiliere das ganze, funktioniert wieder alles wunderbar.

    Da ich jetzt mit Klassen arbeiten möchte, muss ich unbedingt umsteigen. Was muss ich dafür wo ändern?



  • Der Compiler verunstaltet den Namen der Funktion ein wenig. Pack mal extern "C" vor die Definition.



  • strg + f -> "__declspec(dllexport)" -> ""C" _declspec(dllexport)"

    ...und das Problem war gelöst 🙂


Anmelden zum Antworten