首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

为什么GetProcAddress没返回,该如何处理

2012-01-21 
为什么GetProcAddress没返回DLL中声明__declspec(dllexport)voidCreateInstance(CCommProtoIntf**)CPP文

为什么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文件来控制导出的函数名。

热点排行