首先C语言的外部库要按照接口标准,将接口留出来,参考网址如下:
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是你自己的链接库。也可以在解决方案资源管理器的项目上右键,属性,配置属性,链接器,输入,附加依赖项,添加你自己的库进去,多个库之间用空格隔开欢迎分享,转载请注明来源:内存溢出
评论列表(0条)