C#调用托管DLL与非托管DLL

首先解释一下,托管DLL和非托管DLL的区别。狭义解释讲,托管DLL就在Dotnet环境生成的DLL文件。非托管DLL不是在Dotnet环境生成的DLL文件。 托管DLL文件,可以在Dotnet环境通过 “添加引用” 的方式,直接把托管DLL文件添加到项目中。然后通过 Using DLL命 名空间,来调用相应的DLL对象 。  非托管DLL文件,在Dotnet环境应用时,通过 DllImport 调用。 C# 调用非托管DLL文件。DLL文件是用C语言编写的。 托管DLL就是能够在公共语言运行库(Common Language Runtime,简称CLR)中能够直接引用的,并且扩展名为“DL

DLL之前使用过几次,但是最近使用时,又出各种问题。最后弄到晚上十二点多了,看到网上一个创建DLL的图解教程,按上面的讲解,成功实现了C#调用自己创建的DLL。之所以耗了这么久时间,是因为我本想凭自己记忆实现DLL创建调用,但是各种问题随即产生。。。(不说了,割了)。。今天上午再次整理,觉得有必要记录。

C#调用DLL,有很多详尽的博客讲解。我此处只记录简单的两种,我在项目中只用到这两种。


一,C#调用托管类型Dll,实际中我是C#调用c#的DLL。其实这个很简单,就是添加引用就可以了。把dll添加到你所写的C#程序引用里。

 

 

 

二,C#调用非托管类代码,实际中我是C#调用C++ DLL..,还是直接上图吧。


1.创建C++ DLL

网上有个图解教程说的很详细,可以照上面做,但是这个教程有个问题。创建DLL时,需要声明导出函数
这里有两种方法声明导出函数:一种是通过使用__declspec(dllexport),添加到需要导出的函数前,进行声明,另外一种就是通过模块定义文件(Module-Definition File即.DEF)来进行声明。后面这个链接中的教程,并未说明这一单,他同时添加了两种做法。我试了,只使用其中一种就可以创建DLL,并且调用成功。http://444492018.blog.163.com/blog/static/11498932420122993358962/

 

 

 

 

 


创建成功后调用DLL.需要把dll相关文件拷贝到你需要调用的程序的bin目录下的debug(release)下。

 

 

 

 

 

 


也可以添加def模块文件,从而申明函数。也是可以的。

 

 

posted @   mapstar  阅读(759)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下

喜欢请打赏

扫描二维码打赏

支付宝打赏

点击右上角即可分享
微信分享提示