Warum funktioniert DllImport nicht mit "__Internal"?
Ich habe C ++ Shared Library welche Exportmethodeint MyFunc()
für Linux und Windows.
Von C # rufe ich das anMyFunc
mit nachfolgender Unterschrift.
[DllImport(@"__Internal", CharSet = CharSet.Ansi, EntryPoint = "MyFunc")]
static extern unsafe int MyFunc();
// Later I'm using :
MyFunc();
Dieser Code funktioniert gut unter Windows, aber unter Linux löst dies eine Ausnahme ausEntryPointNotFound
.
Ich habe meine C ++ - Bibliothek mit der Option -rdynamic kompiliert und sehe, dass MyFunc als D-Flag mit nm exportiert wird, aber das hat mir auch nicht geholfen.
Ohne Änderung, wenn ich mich einfach ändereDllImport(@"__Internal"
zuDllImport(@"mys.so"
dann klappt das unter linux aber dann muss ich verwendenDllImport(@"mys.dll"
in Fenstern, in denen dies zu Fehlern führt
Also möchte ich das vermeiden.
Ich sehe keinen Fehler, warum__Internal
funktioniert nicht unter Linux.
Beachten Sie, dass ich Mono verwende.
Irgendeine Idee, warum dies unter Linux nicht funktioniert?