我在一个程序中LoadLibrary("c:\\test\\a.dll");其中a.dll链接了一个b.dll,而且b.dll也在test目录下,失败,如果把b.dll放在test.exe目录下,test.exe在C:\下,调用就成功,XP SP2系统,VS2005开发,如果调用SetCurrentDirectory("c:\\test\\")就可以调用成功,我的机器新装,不成功,重装前成功,请问问题出在什么地方,或者是什么地方需要设置一下

解决方案 »

  1.   

    vs2005 默认使用unicodetryLoadLibrary(_T("c:\\test\\a.dll"));
      

  2.   

    如果是unicode问题我想也不会出现能调用成功的问题了
      

  3.   

    当然不成功了,windows定位dll有几个步骤:
    1.exe文件目录
    2.进程当前工作目录
    3.windows系统目录
    4.windows目录
    5.设置的环境变量的目录
    现在你的b.dll运行需要运行在当前进程里面,而如果c:\\test并不是上述5种情况之一,dll载入肯定失败
      

  4.   

    我再把问题描述一次吧
    我用VS2005写了一个测试程序:test.exe
    test.exe用LoadLibrary加载了一个a.dll
    a.dll静态连接了一个b.dll
    其中:test.exe位于c:\下,a.dll和b.dll位于c:\test目录下,程序是这样写的
    HMODULE hDll = LoadLibrary(_T("c:\\test\\a.dll"));在有的机器上能调用成功,在有的机器上不成功,我新装的XP SP2,不成功
    我也怀疑sinsou(阿良·有谁共鸣) 所说的情况,但是有的机器就能成功,为什么?
    而且此程序在我重装机器前运行良好,重装了之后就不行了.当然,我希望它成功,有什么方法可以让它成功,是不是windows有什么地方设置一下就可以了
      

  5.   

    是不是你其他的机器设置了环境变量或者环境变量中的目录正好有b.dll所在的目录
      

  6.   

    那在windows的环境变量的path中加上dll的路径系统属性-》环境变量。。