(写在前面:静态调用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的地方。
网友评论