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?