如何在C#工程中调用C语言外部库

如何在C#工程中调用C语言外部库,第1张

首先C语言的外部库要按照接口标准,将接口留出来,参考网址如下:

VS2010创建并使用动态链接网页链接

C语言dll文件的说明以及生成、使用方法网页链接

制作C/C++动态链接库(dll)若干注意事项网页链接

如果只有DLL而没有源代码,不能自己编译的话,需要查询DLL的接口是什么样子的,可以使用下面的工具去查询:

DLL分析的非常好用的工具(Dependency Walker 2.2)网页链接

Dependency Walker使用说明网页链接

接下来,就可以在C#中进行C语言DLL的调用了,主要使用System.Runtime.InteropServices下的DllImport,参考网址如下:

C#直接使用DllImport外部Dll的方法网页链接

从托管应用程序调用非托管代码网页链接

另外特别要说明的是,如果你的C语言的DLL里面使用了指针 *** 作,虽然可以使用ref的方式接收传入的数据(参考网址网页链接),但是我非常非常非常推荐你使用unsafe的方式去处理指针 *** 作(参考网址网页链接),因为1、如果你的C语言DLL里面有内存 *** 作错误,C#也没法去修复,2、使用unsafe的指针 *** 作会比使用托管的ref *** 作效率高很多(当对效率要求非常高的时候)。

PS:网上资料很多,我列出来的资料也是现查的,你可以根据我写的内容,在网上自行搜索,寻找适合自己的资料。

在c#类里添加[DllImport("dll名.dll")]即可:

比如我用c开发了一个testdll.dll的dll文件,则我在c#类的构造函数前可以添加[DllImport("testdll.dll")],就把c开发的动态链接库添加进了c#项目里。

自己开发的dll可以放在工程的当前工作目录下,用#pragma comment (lib,“Mylibname.lib”)命令引入;Mylibname.lib是你自己的链接库。也可以在解决方案资源管理器的项目上右键,属性,配置属性,链接器,输入,附加依赖项,添加你自己的库进去,多个库之间用空格隔开


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11947549.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存