c#在linux系统下调用c++的so文件

liuxing1046 2012-05-27 05:46:38
c++中的函数如下:DataBuffer* run(char* inputDataURL, char* runtimeFilePath)其中DataBuffer为结构。
由于要在linux系统下运行,所以c#中声明如下:[DllImport("test.so", EntryPoint = "run", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr run([MarshalAs(UnmanagedType.LPArray)]byte[] uml, [MarshalAs(UnmanagedType.LPArray)]byte[] name);
在c#函数中调用该函数时,会产生System.DllNotFoundException异常。

注:在win7系统下,函数在c#中声明为[DllImport("test.dll", EntryPoint = "run", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
public static extern IntPtr run([MarshalAs(UnmanagedType.LPArray)]byte[] uml, [MarshalAs(UnmanagedType.LPArray)]byte[] name);
程序可以正常运行。

求助:要在linux系统下运行正常,我该如何在c#中声明该函数。还请各位多多指点!谢谢
...全文
805 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuxing1046 2012-06-09
  • 打赏
  • 举报
回复
问题已解决,是.so的编译问题。另外,.so文件放在/usr/lib文件下
机器人 2012-05-27
  • 打赏
  • 举报
回复
没搞过mono的PInvoke。。。搜了下,看看下面的资料有没有帮助:

http://www.mono-project.com/Interop_with_Native_Libraries
liuxing1046 2012-05-27
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

DllNotFoundException
是库没有找到造成的。路径是否正确?
[/Quote]
.so文件放在Debug目录下,路径应该没有问题吧
threenewbee 2012-05-27
  • 打赏
  • 举报
回复
DllNotFoundException
是库没有找到造成的。路径是否正确?

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧