我试图运行我的C#/C++在Linux的应用程序后的发展。

一个小小的一部分,FooLib,是用C++编写这是pinvoked从C#为的性能。FooLib没有使用系统的话,唯一的标准C++的功能。它的出口一个单一的功能,宣布为:

extern "C" __declspec(dllexport) void Foo(float*, int, float*);

它是编制视觉C++。我试图运行程序下的单的窗户-编制FooLib.dll但dll载(DllImport)未能有:

Unhandled Exception: System.DllNotFoundException:Foo(single[2],int,single[])

那么,什么我应该做什么?

  • 改变出口宣言》以某种方式?
  • 汇编的东西进入。所以图书馆与海湾合作委员会在Linux上,然后加载的吗?
  • Crosscompile它变成一个.dll与海湾合作委员会在Linux上,然后加载的吗?
  • 别的东西吗?
有帮助吗?

解决方案

你需要重新编译图书馆在Linux上,你会得到一个foolib.此。然后你必须创建一个DllMap(检查这个的链接)使你没有指定一个*.所以图书馆名称为Linux在C#码和一个单独的*.dll for Windows-这就只是一种方便的地图图书馆名称取决于操作系统。

其他提示

一个很酷的工具,可用于自动化地绑定是痛饮.http://www.swig.org/

同意第1次评论。你的.净码应该运行在Linux上没有任何重新编译,但是你的母调需要将本地汇编。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top