目录格式:test.exe
test.dll
dlls\a.dll
dlls\b.dll我想在 test.dll 中调用 dlls\a.dll,a.dll 中调用了 b.dll。问题是:test.dll调用a.dll时,总是提示找不到b.dll。这个路径问题如何解决呀?求解,谢谢!PS:静态调用。

解决方案 »

  1.   

    up,有空在来看你动态调用试试loadlibray
    GetProcAddress
      

  2.   

    动态调用问题同在。test.dll 中是这样定义的。
    procedure myproc(); stdcall; external 'dlls\a.dll'; export;a.dll 中是这样定义的。
    procedure getpic(); stdcall; external 'b.dll'; export;
      

  3.   


    我说了呀,动态调用问题同在,问题是a.dll的源码没有。也就是a.dll和b.dll在一个目录,如果test.dll和它们在一个目录,则没有任何问题,当吧a.dll和b.dll放到一个目录,test.dll在上一个目录,则调用出现问题。
      

  4.   

    如果你用动态调用,至少你可以用绝对路径了
    ExtractFilePath(Application.ExeName)+'dlls/a.dll'
    ExtractFilePath(Application.ExeName)+'dlls/b.dll'
    ExtractFilePath(Application.ExeName)+'test.dll'
      

  5.   

    楼上还没听明白……b.dll 的调用在 a.dll中,a.dll我们没有源代码!我们只能通过test.dll 调用a.dll……所以不在一个目录,总是提示b.dll找不到。