工程中用到一个dll,但必须把dll放在工程目录下面才可以(dll要和exe放在一起,会很杂...),我想把dll都放到一个文件夹下面,比如bin,可这样又会报错说找不到dll。有没有指定搜索路径活其他办法可以避免这个问题?
ps:尽可能要静态链接地方法,即尽量避免使用LoadLibrary...

解决方案 »

  1.   

    1. 在工具-》选项-》中设置。
    2. 设置修改系统变量,我的电脑-》属性-》高级-》环境变量,对应的PATH。
      

  2.   

    LoadLibrary使用完整路径,或者将bin路径添加到path环境变量中。
      

  3.   

    楼主的问题问的好,我也一直在找有没有这样的API,后来就一直没找到。
    后来我想想,其实也可以用其他方法做到:
    可以得到.exe的路径吧,然后用这个路径做运算,就可以得到和.exe相关的其它路径吧,然后组合吧。(如楼上所说,用完整路径)
      

  4.   

    在VC的IDE中运行程序时,运行的当前目录是工程目录
    你可以设置这个目录为你的bin目录,就可以了,不需要设置环境变量
      

  5.   

    俺一直用程序所在的路径作为路径,从__argv[ 0 ]里面得到程序所在的路径。
      

  6.   

    把编译出的 exe 和 dll 文件都输出到同一个 bin 目录吧设 PATH 也行
      

  7.   

    你是不是直接有的导入或者导出函数用的DLL里的函数啊如果是这样子的话就不行的。不要用导入函数用dll里的函数直接调用LoadLibrary 加载dll的完整路径就行了,这个函数加载的时候他会自己加载dllwinmain你的函数的,在dll的入口点加上你要调用的函数,它就会自己调用了。
      

  8.   


    LoadLibrary("bin\\**.dll");
      

  9.   

    不想用LoadLibrary......就是如何让vc编译的程序知道去工作目录中的bin目录寻找dll,而不是只在工作目录下找...
    发行的时候dll放在相对路径bin\\中,可程序只会在所在目录找....难道要在安装程序修改环境变量加上个.\\bin不成?
      

  10.   

    SetDllDirectory,不过此函数要XP SP1以上才可以用其他系统可以用SetCurrentDirectory
      

  11.   

    在哪里写这句话呢?MFC程序,一开始就提示找不到dll...
      

  12.   

    难道,静态链接,dll必须这样么?这样一来就必须要“安装”了.......一个小的工具软件,发布的时候想尽可能简单,尽可能不用打包,能“绿色发布”最好....还有什么好办法么?
    Windows将遵循下面的搜索顺序来定位DLL: 
    1. 包含EXE文件的目录, 
    2. 进程的当前工作目录, 
    3. Windows系统目录, 
    4. Windows目录, 
    5. 列在Path环境变量中的一系列目录。 
      

  13.   

    顺序是这样:
    1. 包含EXE文件的目录, 
    3. Windows系统目录, 
    4. Windows目录, 
    2. 进程的当前工作目录, 
    5. 列在Path环境变量中的一系列目录。 其实道理很简单,你要让系统知道该到哪里去找dll文件。如果是一个小的“绿色”软件,那最好不要用dll,就一个exe用起来更方便。