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