Почему DllImport не работает с & quot; __ Внутренним & quot ;?

У меня есть общая библиотека C ++, метод экспорта int MyFunc() для Linux и Windows.

Из C # я называю MyFunc со следующей подписью.

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

Этот код прекрасно работает на Windows, но внутри Linux это исключение EntryPointNotFound,

Я скомпилировал свою библиотеку C ++ с параметром -rdynamic и вижу, что MyFunc экспортируется как флаг D с nm, но это также не помогло мне.

Без каких-либо изменений, если я просто изменить DllImport(@"__Internal" в DllImport(@"mys.so" тогда будет нормально работать на Linux, но тогда я должен использовать DllImport(@"mys.dll" в окнах, которые нарушают совместимость кода.
Поэтому я хочу избежать этого.

Я не вижу никакой ошибки, почему __Internal не работает на Linux.
Обратите внимание, что я использую моно.

Есть идеи, почему это не работает в Linux?

2

Решение

Вы можете использовать это как в Windows, так и в Linux:

[DllImport ("mys")]

Соответствующее расширение будет добавлено в соответствии с платформой (и это работает как на .NET, так и на моно).

5

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]