Por que o DllImport não funciona com “__Internal”?

Eu tenho biblioteca compartilhada C + + que método de exportaçãoint MyFunc() para Linux e Windows.

De C # eu chamo oMyFunc com a seguinte assinatura.

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

Esse código funciona bem no windows mas dentro do linux isso lança uma exceçãoEntryPointNotFound.

Eu compilei minha biblioteca C ++ com a opção -rdynamic e vejo que MyFunc é exportado como sinalizador D com nm, mas isso também não me ajudou.

Sem qualquer alteração, se simplesmente mudarDllImport(@"__Internal" paraDllImport(@"mys.so" então vai funcionar bem no Linux, mas então eu tenho que usarDllImport(@"mys.dll" nas janelas que isso quebra o recurso de cruz de código compatível.
Então eu quero evitar isso.

Eu não vejo nenhum erro por isso__Internal não está funcionando no Linux.
Note que estou usando mono.

Alguma idéia de por que isso não está funcionando no Linux?

questionAnswers(1)

yourAnswerToTheQuestion