Dlaczego DllImport nie działa z „__Internal”?

Mam bibliotekę współdzieloną C ++, która eksportuje metodęint MyFunc() zarówno dla systemu Linux, jak i Windows.

Z C # dzwonięMyFunc z następującym podpisem.

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

Ten kod działa poprawnie w systemie Windows, ale wewnątrz Linuksa powoduje to wyjątekEntryPointNotFound.

Skompilowałem moją bibliotekę C ++ z opcją -rdynamic i widzę, że MyFunc jest eksportowany jako flaga D z nm, ale to również nie pomogło mi.

Bez zmian, jeśli po prostu się zmienięDllImport(@"__Internal" doDllImport(@"mys.so" wtedy będzie działać poprawnie na Linuksie, ale potem muszę go użyćDllImport(@"mys.dll" w oknach, które przerywają funkcję kompatybilną z kodem
Więc chcę tego uniknąć.

Nie widzę żadnego błędu, dlaczego__Internal nie działa na Linuksie.
Zauważ, że używam mono.

Jakiś pomysł, dlaczego nie działa na Linuksie?

questionAnswers(1)

yourAnswerToTheQuestion