为什么GetProcAddress没返回
DLL中声明
__declspec(dllexport) void CreateInstance(CCommProtoIntf**) ;
CPP文件中
void CreateInstance (CCommProtoIntf** pCommIntf)
{
CSitecSuWrapper* pClassAddr ;
pClassAddr = new CSitecSuWrapper ;
*pCommIntf = pClassAddr ;
}
应用程序头文件中
// 宏定义函数指针类型
typedef void(*lpCreateFun)(CCommProtoIntf **);
CPP文件中
HINSTANCE hDll ; // DLL句柄
lpCreateFun CreateFun ; // 函数指针
hDll = LoadLibrary ( "D:\\Project\\SitecSU\\Debug\\SitecSU.dll ") ;
if (hDll != NULL)
{
CreateFun = (lpCreateFun)GetProcAddress (hDll, "CreateInstance ") ;
}
这边 hDll 得到了0x01500000 但是CreateFun 一直为0x00000000 那边出问题了?
[解决办法]
那个dll是你写的吗?如果是的话,在导出CreateInstance时加上extern "C ",这样你就可以用
GetProcAddress(hDll, "CreateInstance ")了。如果不是你写的话,使用Depend看到的名字,你应该可以加载成功呀。不过像导出 "?CreateInstance@@YAXXZ ",很不好。如果你能让dll改掉是最好的。可以通过def文件来控制导出的函数名。