程序调用个动态链接库,用的LoadLibary()函数。
换个路径就调用不了DLL,请大牛解决下。

解决方案 »

  1.   

    回1楼,没有依赖别的DLL。2楼,是绝对路径,那我改变了文件路径怎么办?
      

  2.   

    呃,改目录就不应该调用成功。不然岂不乱了,随便运行一个程序,还得整个硬盘搜索dll ?
      

  3.   

    所谓绝对路径并不是说你写死了如:c:\aa\a.dll这种,而是通过函数如GetModulePathName取应用程序的绝对路径,再在这个取得的路径上去修改成你dll的相对路径.例如你通过GetModulePathName取得的路径是d:\ttt\bin\t.exe然后基于这个改成d:\ttt\bin\dll\a.dll
      

  4.   

    设置环境变量,在path中加入dll的位置,或把路径写入配置文件,在主程序中读出路径再调用LoadLibary.
      

  5.   

    可以得到主进程exe的路径,通过GetModulePathName之类的
    然后得到DLL的路径
    然后再LoadLibary
      

  6.   

    设置环境变量,在path中加入dll的位置,或把路径写入配置文件,在主程序中读出路径再调用LoadLibary.
      

  7.   

    我的exe和dll放在一个文件夹下,这个文件夹改变了路径,也得改dll路径吗?
      

  8.   

      Windows将遵循下面的搜索顺序来定位DLL:    
      1.包含EXE文件的目录,    
      2.进程的当前工作目录,    
      3.Windows系统目录,    
      4.Windows目录,    
      5.列在Path环境变量中的一系列目录。
      

  9.   

    Windows系统目录windows98 下为 windows\system
    windows2000 windows XP 下为 windows\system32    windows\system
      

  10.   

    楼上winxp下,是先windows\system32    windows\system还是先 1.包含EXE文件的目录,    
      2.进程的当前工作目录,    
      3.Windows系统目录,    
      4.Windows目录,    
      5.列在Path环境变量中的一系列目录。
      

  11.   

      Windows将遵循下面的搜索顺序来定位DLL:   
      1.包含EXE文件的目录,   
      2.进程的当前工作目录,   
      3.Windows系统目录, 
      {
        windows98 下为 windows\system
        windows2000 windows XP 下为 windows\system32    windows\system
      }  
      4.Windows目录,   
      5.列在Path环境变量中的一系列目录。
      

  12.   

    发现了,我的问题不是LoadLibary函数条用时,返回的句柄小于0
      

  13.   

    问题是LoadLibary函数调用时,返回的句柄小于0
      

  14.   

    GetLastError() 看看错误是什么。
      

  15.   

    缺少了一个别的DLL,我汗。
      

  16.   

    好像用vs可以的,还是不要vc了