首先,感谢http://ironurbane.iteye.com/blog/421954 文章,让我明白了不同工程之间调用DLL的步骤和一些需要注意的地方:
1、生成DLL,需要.def文件的编辑,生成引入库lib文件,其中的格式可以直接写为:
EXPORTS
Rotation1 @1
其中,Ritation为函数名,我的dll中的入口函数,@1代表第一个执行。此时的操作均在分工程中进行。
2、在主工程中,生成的DLL,利用HMODULE Affinegpu=LoadLibrary("Affine_d.dll");来加载进入;
同时,需要添加#include Affine_m.h"头文件。
3、同时,在主工程中,需要在“库目录”下,找到“Affine_d.lib”,同时,用“链接库”中的“输入”项加入“Affine_d.lib”。
4、在主函数中,需要首先获得DLL中函数的地址,然后再进行调用,具体见代码:
typedef void (_stdcall * Rotation)();
Rotation _rotation;
_rotation = (Rotation)GetProcAddress(Affinegpu, "Rotation1 ");
其中,首先声明一个空的函数指针Rotation ,然后通过GetProcAddress得到DLL中函数Rotation1的地址;
最后,通过
if (_rotation !=NULL)
{
Rotation1();
}
即可完成整个DLL的调用!