0
点赞
收藏
分享

微信扫一扫

Mono P/Invoke :DLLImport

color_小浣熊 2022-10-24 阅读 118

Mono 的初衷是为了吸引更多的Windows .Net程序员来加入Linux平台的开发。但在Linux世界中C语言依然是主流。很多时候一些关键应用(比如大型笛卡儿乘积运算、需要调用平台硬件功能的时候)不得不依赖C来完成。

Mono 通过DLLImport 来描述.下面是一段示范代码:

[DLLImport ("libc.so")] 
private static extern int getpid ();


当然别忘了添加名称空间:​​​System.Runtime.InteropServices​​​
当执行这段代码时候,Mono Runtime 会去尝试调用本地系统中的libc.so中getpid(),如果找到就执行getpid().反之就会抛出​​​DllNotFoundException​​ .

​​linux​​​​上DLLImport​​的搜索共享库顺序如下:

​​1​​​​、/lib,​​​​比如在/usr/lib
2​​​​、有绝大部分库文件都被缓存在 /etc/ld.so.cache​​​​中,该文件由 /etc/ld.so.conf​​​​编辑后并运行命令ldconfig​​​​产生.​​​​那么你可以在ld.so.conf​​​​中添加你需要so​​​​文件的目录之后运行ldconfig​​​​。
3​​​​、被用户环境变量​​​​LD_LIBRARY_PATH ​​​​标识的目录​​

 

举报

相关推荐

0 条评论