现在我用mfc显示链接DLL文件,函数指针用GetProcAddress()获取的却是一个空的地址,具体代码如下(DSUM为函数名):
HINSTANCE hDllInst = AfxLoadLibrary("add.dll"); 
if(hDllInst)
{
typedef BOOL(WINAPI * DSUM)(const char *);
DSUM lobj;
//返回dll中ILoadOBJ()函数的地址 

lobj=(DSUM)GetProcAddress(hDllInst,"DSUM"); if (lobj)//-------ERROR!!总是返回空地址
{
DSUM((LPCSTR)name);
}
FreeLibrary(hDllInst);
}请教各位高手为什么会出现这种情况,查了半天也没有查到解决方案,谢谢各位!!

解决方案 »

  1.   

    用Depends看看是否有这个导出名。大小写、前缀什么的。
      

  2.   

    应该是你的导出名字被改了  比如一个函数 add(...) DLL导出的话可能会改成_add  C方式导出的话 加上extern "C"  要不加一个DEF文件  这种方式你的DEF文件里写的导出什么就是什么  
      

  3.   

    1查看句柄 hDllInst看看是否为空。
    2然后进入add.dll,看看函数DSUM是否是导出函数。
      

  4.   

    句柄 hDllInst不为空,你说的进入add.dll,怎么操作呢?Ps:DLL中DSUM函数前写的void __declspec(dllexport)
      

  5.   

    在void _declspec(dllexport) 前面加上个extern "C"试试。
      

  6.   

    extern   "C"的作用是,使编译器按照c的方式生成函数名,c的方式实际的函数名和你写的一样。
    确实是没有写extern   "C",谢谢楼上各位了!!