程序员常回来看看

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

2018-08-22  本文已影响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的地方。

上一篇下一篇

猜你喜欢

热点阅读