我在程序中用下面的代码加载一个动态链接库:
HMODULE hModule;
if((hModule=::LoadLibrary("a"))==NULL)
{
MessageBox(NULL,"fail","test",MB_OK);
return;
}
add addr=(add)::GetProcAddress(hModule,"func");
if(!addr)
{
MessageBox(NULL,"fail","test",MB_OK);
return;
}
在我自己的机器上可以顺利加载动态链接库a.dll,于是我做了发布版,然后拿到其他机器上去测试,发现如果机器装了VC,运行正常;如果机器没装VC,则会弹出“fail”对话框,a.dll加载失败。我一筹莫展。
能帮忙解决一下吗?
谢谢!

解决方案 »

  1.   

    发布dll的时间选Release版的试试.
      

  2.   

    看看这个吧
    http://www.vchelp.net/wyy/paper/z_debug_tip.asp
      

  3.   

    小弟刚学
    请问这句
    add addr=(add)::GetProcAddress(hModule,"func");
    中的 add addr 和(add)表示什么意思
      

  4.   

    add表示函数指针类型
    addr表示定义一个add类型的函数指针
    比如如下定义:
    typedef int (*add)(int) ;
    add addr ;
    这时就定义了一个函数指针(addr),因为GetProcAddress()得到一个FARPROC类型的地址值,
    所以要强制转换一下才行。
      

  5.   

    出了什么错误呢?可能是你忘记加Mfc42。Dll了。
      

  6.   

    谢谢各位,
    我已经找到原因了,
    共缺少两个重要的动态链接库
    MFC42D.dll和MSVCRTD.dll