HINSTANCE hInst = LoadLibrary( _T("Test.dll"));
if(hInst == NULL)
{
 AfxMessageBox(_T("加载dll出错"));
}MyFunc fun=(MyFunc)GetProcAddress(hInst, "func");
....Test.dll是用VS2005编译的(用的也是C++),然后在VS2005的项目里调用。在我自己的电脑里(安装了VS2005)能够正确加载Test.dll,
而在其它没安装VS2005的机器上运行时就弹出"加载dll出错"。所有可能的问题我都检查过了(Test.dll的路径正确)不知道大家有没遇到过这个问题,帮帮忙啊,谢谢。

解决方案 »

  1.   

    路径在哪里?或者可能test.dll中用到了特殊的组件在目标计算机上没有,用depends看看。
      

  2.   

    test.dll其实是一个插件,里面没用什么特殊的组件啊。我把整个程序编译完后打包,先解压到我自己的电脑上运行,dll能正常加载。然后我把软件包复制到其它机器上运行,dll就不能正常加载了。
    程序的其它功能都正常,隐式调用的库也正常。就是LoadLibrary显式调用库时有问题。是不是VS2005的LoadLibrary需要什么模块支持?
      

  3.   

    100% test.dll用到了其他组件,这个东西在你的机子上有,在其他机子上没有,最常见的是:
    MFC71.dll
    msvcp71.dll
    msvcr71.dll
    其他机子没有安装vs2005,也不会有这些个dll的
      

  4.   

    应该是托管的,托管dll怎么显式加载呢?我用的是VS2005,把
    mfc80.dll,mfc80u.dll,mfcm80.dll,mfcm80u.dll,msvcr80.dll,msvcm80.dll,msvcp80.dll
    都复制到目标机器上了。还是不行。还想问一下,在发布软件时到底到上面哪些dll是必须要复制到过去的呢,因为我不太清楚,所以
    全都放进去了。
      

  5.   

    我用Depends查了一下,就下面这一个错误,不知道是什么意思:Error: The Side-by-Side configuration information in "d:\....\test.dll" contains errors.  (14001).
    Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.
      

  6.   

    具体怎么做,需要把哪些文件复制过去呢,我已经把
    mfc80.dll,mfc80u.dll,mfcm80.dll,mfcm80u.dll,msvcr80.dll,msvcm80.dll,msvcp80.dll
    这几个都复制过去了。
      

  7.   

    vs2005的程序,是以manifest文件指定的路径查找dll的,单纯拷贝不能解决问题