Я пытаюсь запустить свое приложение C # / C ++ в Linux после его разработки в Windows.
Небольшая его часть, FooLib, написана на C ++, а для повышения производительности - из C #. FooLib не использует системные вызовы, только стандартную функциональность C ++. Он экспортирует одну функцию, объявленную как:
extern "C" __declspec(dllexport) void Foo(float*, int, float*);
Он скомпилирован с Visual C ++. Я попытался запустить приложение под моно с Windows-скомпилированным FooLib.dll, но загрузка dll (DllImport) не удалась с:
Unhandled Exception: System.DllNotFoundException:Foo(single[2],int,single[])
Итак, что мне делать?
- Изменить объявление экспорта каким-либо образом?
- Скомпилируйте это в библиотеку .so с gcc в Linux, затем загрузите это?
- Кросс-компилировать его в .dll с gcc в Linux, а затем загрузить это?
- Что-то еще?