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)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏智能大石头

老瓶装新酒 - C#调用WM手机发送短信(源码)

一些系统,需要能够发送短信,量很小,平均每日10条。 运营商平台太贵,白名单很严格,小额只能发省内; 各短信平台有各种限制,大事件前后会关闭; 飞信以前可以用W...

28150
来自专栏王清培的专栏

.NET框架设计(常被忽视的C#设计技巧)

阅读目录: 1.开篇介绍 2.尽量使用Lambda匿名函数调用代替反射调用(走进声明式设计) 3.被忽视的特性(Attribute)设计方式 4.扩展方法让你的...

38770
来自专栏智能大石头

C#嵌入x86汇编——一个GPIO接口的实现

开始进入工业自动化,买的工控机带有GPIO接口,可用于直接控制继电器。 从厂家拿到接口手册一看,居然是汇编直接操作端口,基本上是IN/OUT指令了。接口很简单,...

29960
来自专栏大数据智能实战

C#语音播放引擎cscore及其播放器

最近在找一个C#语音播放器的时候,才发现这个几乎很难找到,当然也存在自己找资料不太全的问题。 但是至少这个是存在的,常见的还是Naudio的东西。但是说实话,除...

42590
来自专栏守望轩

c#细节–Property和Attribute迷局

《c#的细节》是我当初学习c#时候,做的一些学习笔记的整理,现在回头看来这些都是非常浅显的知识,是c#非常细节的地方,同时也是不能忽略的地方,”细节决定成败“,...

21350
来自专栏大数据智能实战

C# webbrowser爬虫中经常碰到的脚本错误弹出窗口的问题解决

在爬虫过程中,经常会碰到脚本错误的提示窗口。 网上有关于这个错误的好多解决办法。 后来终于测试成功。其实现如下:    //## 这边把脚本错误的压制设置为t...

83350
来自专栏葡萄城控件技术团队

C# 8.0的三个值得关注的新特性

image.png C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新。同时,C# 每个版本的发布都与同...

29380
来自专栏守望轩

c#细节(三)-AS和IS

《c#的细节》是我当初学习c#时候,做的一些学习笔记的整理,现在回头看来这些都是非常浅显的知识,是c#非常细节的地方,同时也是不能忽略的地方,”细节决定成败“,...

21250
来自专栏守望轩

c#的细节(二)-修饰符

写在最前面的话: 《c#的细节》是我当初学习c#时候,做的一些学习笔记的整理,现在回头看来这些都是非常浅显的知识,是c#非常细节的地方,同时也是不能忽略的...

19670
来自专栏守望轩

c#的细节(一)-问号的细节

写在最前面的话: 《c#的细节》是我当初学习c#时候,做的一些学习笔记的整理,现在回头看来这些都是非常浅显的知识,是c#非常细节的地方,同时也是不能忽略的地方,...

21660

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励