获取DLL文件函数指针......
直接用函数名不能获取地址
....
....
typedef void(*Fun)();
Fun P=(Fun)GetProcAddress(P,"print"); //此处无法获取
Fun P=(Fun)GetProcAddress(P,MAKEINTRESOURCE(1));//却可以 MAKEINTRESOURCE这应该是dll文件里面的函数列表 第一个函数就是“print”第二函数print2就是MAKEINTRESOURCE(2);
.....
.....
那么问题就是 第一种方式为啥不行???????????(字符集是多字节字符集)
导出的符号不一定就是函数名字,你可以使用VS自带的dumpbin来查看导出的符合名字是什么,如果想让他是函数名字,可以用def文件导出符号。
现在可以了
dll中的代码是这样的
#include
using namespace std;
void _declspec(dllimport) print2();
void print2()
{
cout<<"this is dll2"<<endl;
}
void _declspec(dllimport) print3();
void print3()
{
cout<<"this is dll3"<<endl;
}
为什么dumpbin查出来的是?print2@@YAXXZ 而不是print2()??
1 0 0001105F ?print2@@YAXXZ = @ILT+90(?print2@@YAXXZ)
2 1 00011208 ?print3@@YAXXZ = @ILT+515(?print3@@YAXXZ)