Mono P/Invoke :DLLImport


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 標識的目錄

 

相關文章:

如何利用C生成.so供Mono調用

C# DLLImport C++ dll 幾點注意事項

Linux下給C#增加CopyMemory支持

C# .NET Interoperability with Native C Libraries on Cross Platform : PART I

C#.NET Interoperability with Native C Libraries on Cross Platform: PART II  

P/Invoke Tutorial: Basics (Part 1)

P/Invoke Tutorial: Passing strings (Part 2)

P/Invoke Tutorial: Passing parameters (Part 3)

P/Invoke Tutorial: Pinning (Part 4)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM