zoukankan      html  css  js  c++  java
  • 动态加载DLL函数GetProcAddress错误

    GetLastError获取错误代码127,指代“找不到指定程序”。

    解决:

    转自:http://hi.baidu.com/violetwangy/item/c35b3b95ecf5374cf042152a

    采用“运行期间动态链接”自己的dll文件,LoadLibrary成功获取dll模块句柄,但是GetProcAddress(hModule, "ExportFunc")却返回NULL,GetLastError获取错误代码127,意思是“找不到指定程序”。

    问题所在:用Depends工具(VS2010默认没有,需另行下载:http://www.dependencywalker.com/),查看dll的导出函数名称。发现导出函数名不再是“ExportFunc”,而根据函数的返回类型和参数进行了“decorate”,变为了“?ExportFunc@@YAXPB_W@Z”。

    解决方法:

    (1)修改GetProcAddress的第二个参数为真正的导出函数名称即可;

    (2)在dll工程中添加DEF文件,写入如下内容:

             EXPORTS

                             ExportFunc

            重新编译dll工程。再次用Depends工具查看导出函数名称,即为“ExportFunc”。

    工程--链接器--输入 的模块定义文件中,将自己的DEF文件加上

    http://www.cnblogs.com/skynext/
  • 相关阅读:
    The first appliaction for "Hello World!"
    zone
    learn to study
    深入理解 Angular 2 变化监测和 ngZone
    看看吧
    生命周期钩子
    一个简单的todo
    依赖注入
    @Output()
    @Input
  • 原文地址:https://www.cnblogs.com/skynext/p/3719021.html
Copyright © 2011-2022 走看看