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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage