在 Windows 上开发后,我试图在 Linux 上运行我的 C#/C++ 应用程序。
它的一小部分,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[])
所以我该怎么做?
- 以某种方式更改出口申报?
- 在 Linux 上用 gcc 将东西编译成 .so 库,然后加载它?
- 在 Linux 上使用 gcc 将其交叉编译为 .dll,然后加载它?
- 还有什么?