我做了一个mfc扩张dll类新的dll(version.dll),在其中导出一个函数:
extern "C" __declspec(dllexport) void TestVer(int,int,int);
void TestVer(int i,int j,int k)
{
int c =  0;
c++;
};
编译通过在程序中测试时:
typedef void (*Test)(int,int,int);HMODULE TestDll = LoadLibrary("version.dll");
if(TestDll )
{
      Test _Test = (Test)GetProcAddress(TestDll ,"TestVer");
问题1:为什么此处_Test指针一直为空?我查看了version.dll的输出,已经有Testver导出了
      (*_Test )(1,2,3);
}
....
问题2:采用静态隐式连接,一直说无法定位Testver...请各位高手解答..用mfc动态dll类型做出来的也是一样的问题求大家解决

解决方案 »

  1.   

    用dumpbin.exe /exports yourdll.dll命令查看一下导出的函数列表。看看相应的函数在不在?
    建议用.def文件定义导出函数
      

  2.   

    是不是没有导出?GetProcAddress的时候断住,watch窗口输入@err看看错误码.
      

  3.   

    导出了,用dependency walker都可以看出导出函数了
      

  4.   

    dll中的导出函数前加一句: AFX_MANAGE_STATE(AfxGetStaticModuleState( ));void TestVer(int i,int j,int k)
    {
             AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
    int c =  0;
    c++;
    };
      

  5.   

    不是HINSTANCE了?
    怎么写成了HMODULE
      

  6.   

    在DEF文件里的EXPORT下面加上:
    TestVer
    就行了.找不到地址的原因就是名字不对,编译器在生成DLL的时候把函数的名字给改了.