首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

c#在linux系统下调用c++的so文件,该怎么处理

2012-06-09 
c#在linux系统下调用c++的so文件c++中的函数如下:DataBuffer* run(char*inputDataURL, char*runtimeFilePa

c#在linux系统下调用c++的so文件
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#中声明该函数。还请各位多多指点!谢谢

[解决办法]
DllNotFoundException
是库没有找到造成的。路径是否正确?
[解决办法]
没搞过mono的PInvoke。。。搜了下,看看下面的资料有没有帮助:

http://www.mono-project.com/Interop_with_Native_Libraries

热点排行