美文网首页程序员常回来看看
“GetProcAddress错误127” 如果你试了网上所有方

“GetProcAddress错误127” 如果你试了网上所有方

作者: 末一哟 | 来源:发表于2018-08-22 17:41 被阅读29次

    (写在前面:静态调用dll好用吗?还行,但感觉动态怎么听着都更有逼格不是?)

    关掉所有窗口,按我说的步骤,来一次。

    1.在Tools目录下使用DEPENDS.EXE,导入你选择的dll文件。

    DEPENDS.EXE

    显示如下:

    DEPENDS界面

    分为四个窗口,

    左上:dll信息窗口,也就是这个dll中你所需要用到的所有dll;

    右上:所选dll模块你用到的函数(不是自己写的)

    右下:所选dll模块导出的函数(基本上都是你写的)

    下方:所有dll模块属性

    这就很明了了,你GetProcAddress的智能是右下窗口给的Function名,如果你发现这里导出的名字跟你编写的时候有出入,那么建议一下两种方法尝试修改:

    1.如果您是使用头文件导出,那么在_declspec(dllexport)之前加上“ extern “C” ”来固定命名格式;

    2.如果您使用的是.def文件来导出,那么建议在导出函数名后加上序号,如图:

    标号的.def文件

    将GetProcAddress(hDLL,"Max")改为GetProcAddress(hDll,MAKEINTRESOURCE(1)),这样一可以避免命名问题,二可以提高调用速度;


    这些准备工作做完,看代码。

    测试程序

    这两if用来判断是否正确导入dll,就不要我多说了。

    要知道我为什么要写这个吗?我也是127错误,找了半天没找到,大概花了将近一小时摸索问题在哪,网上很多编码问题都是比较古老的问题了,现在基本上不会出现。那我到底错在哪里了???

    MyDll.h MyDll.c

    兄弟们发现了吗?我写函数的时候把函数名MaX,它写错了!(┓( ´∀` )┏),然后声名的时候写对了Max,所以程序编译没有问题是因为函数定义MaX有问题吗?没有ok的。那头文件这里声名Max有问题吗?也没有啊,我声名是声名了,但是我c里面没有写这个函数,我就是声名但没实现罢了!所以我depends查看就没有导出Max这个函数,因为不存在这个函数呀!

    上述内容就是总结(抄)来的,大家在CSDN上面基本上都能找得到。

    在这里就想提醒一下朋友们:

                                写完的代码要看的,你以为没问题的地方往往就是你花最长时间debug的地方。

    相关文章

      网友评论

        本文标题:“GetProcAddress错误127” 如果你试了网上所有方

        本文链接:https://www.haomeiwen.com/subject/ilmyiftx.html