¿Por qué DllImport no funciona con "__Internal"?

Tengo biblioteca compartida de C ++ que método de exportaciónint MyFunc() Tanto para Linux como para Windows.

Desde C # llamo alMyFunc Con la siguiente firma.

[DllImport(@"__Internal", CharSet = CharSet.Ansi, EntryPoint = "MyFunc")]
static extern unsafe int MyFunc();
// Later I'm using :
MyFunc();

Este código funciona bien en Windows, pero dentro de Linux, esto produce una excepción.EntryPointNotFound.

He compilado mi biblioteca de C ++ con la opción dinámica y puedo ver que MyFunc se exporta como un indicador D con nm, pero esto tampoco me ayudó.

Sin ningún cambio si simplemente cambio.DllImport(@"__Internal" aDllImport(@"mys.so" Entonces funcionará bien en Linux pero luego tengo que usarDllImport(@"mys.dll" En las ventanas que este código rompe la característica compatible cruzada.
Así que quiero evitar esto.

No veo ningun error que por eso__Internal no está funcionando en Linux.
Tenga en cuenta que estoy usando mono.

¿Alguna idea de por qué esto no está funcionando en Linux?

Respuestas a la pregunta(1)

Su respuesta a la pregunta