DllImport

背景

这应该是在做一个短信猫的调用时遇到的,因为c#是托管语言,就是会编译成中间语言,它调用托管dll只需引用即可,但是对于非托管,例如win32的dll那就需要这个操作了。写到这里,也想起当时调用短信猫的事情,不知为何,短信猫经常死住,后来我改为了延时发送的方法,效果还算可以,不过过去好久了,不知如何了。

正确做法应该是采取队列方式合适,把要发送的短信放在一个队列里,或者表里,然后循环队列的数据发送,只要失败就继续发送。

知识点

DllImport是用来将特性化方法由非托管动态链接库 (DLL) 作为静态入口点公开

从以上语句我们可以理解出三点:
1.C++编写的非托管dll可以通过DllImport引入到C#中;
2.引入到C#中的只能是C++方法(或者说函数),而不能是数据(或者说变量);
3.引入到C#中后只能声明为静态函数; 

DllImport会按照顺序自动去寻找的地方: 1、exe所在目录 2、System32目录 3、环境变量目录所以只需要你把引用的DLL 拷贝到这三个目录下 就可以不用写路径了 

原文地址:https://www.cnblogs.com/sddychj/p/6762833.html