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?