传奇刘星
管理员
管理员
  • 最后登录2024-04-24
  • 发帖数588
  • 社区居民
  • 忠实会员
阅读:12228回复:3

[C#][原创帖]C#调用易语言写的DLL

楼主#
更多 发布于:2016-01-18 16:14
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解码
https://blog.feiyuit.cn
小哲Bug
贫民
贫民
  • 最后登录2017-10-16
  • 发帖数1
沙发#
发布于:2017-10-16 17:41
没毛病,对我很有帮助
doubleyong
管理员
管理员
  • 最后登录2025-04-01
  • 发帖数1197
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
板凳#
发布于:2016-01-18 21:30
哇,原创帖,必须赞一个
知识需要管理,知识需要分享
狗哥爱爱萍
侠客
侠客
  • 最后登录2016-12-14
  • 发帖数22
  • 社区居民
地板#
发布于:2016-01-18 19:01
抢个沙发
刺瞎双眼去寻找你的背影
游客


返回顶部

公众号

公众号