C#调用易语言写的DLL
1. 找不到指定的DLL文件 {其他信息: 无法加载 DLL“***.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。} 解决方法: DllImport会按照顺序自动去寻找的地方: 1、exe所在目录 2、System32目录 3、环境变量目录 所以,一般我们的DLL文件通常存放在exe可执行文件的目录下(通常调试程序的时候我们放在bin目录的Debug文件夹下) 2. 运行平台不一致造成的错误 {其他信息: 试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)} 造成这个错误的原因是因为我们易语言编译的DLL是标准的32位windows动态链接库 解决方法: 把C#的项目设置成x86即可 3. 入口点不正确 {其他信息: 无法在 DLL“BianMaZhuanHuan.dll”中找到名为“bm_url_bm2”的入口点。} 解决方法: 前提是需要知道我们dll里面的函数名是什么,才能正确调用。 目前就只遇到这些问题,下面附上C#调用非托管dll的格式: 定义: using System.Runtime.InteropServices; [DllImport("动态链接库库名.dll")] 访问修饰符 static extern 返回值类型 函数名(参数列表); 调用: 函数名(参数列表); 注意: static静态属性不能修改 下面附上我写的一个编码转换的模块(只有三个功能,不过以后会逐渐的增加更多可能会用到的功能) BianMaZhuanHuan.rarBianMaZhuanHuan.dll(32位windows动态链接库) string bm_utf8_gb2132(string str) //编码_utf8到gb2312 string bm_url_bm(string str) //编码_URL编码 string bm_url_jm(string str) //编码_URL解码 |
|
|
板凳#
发布于:2016-01-18 21:30
哇,原创帖,必须赞一个
|
|
|