怎么指定用到的dll的路径?

Cacar 2008-09-13 06:54:53
工程中用到一个dll,但必须把dll放在工程目录下面才可以(dll要和exe放在一起,会很杂...),我想把dll都放到一个文件夹下面,比如bin,可这样又会报错说找不到dll。有没有指定搜索路径活其他办法可以避免这个问题?
ps:尽可能要静态链接地方法,即尽量避免使用LoadLibrary...
...全文
423 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnzdgs 2008-09-15
  • 打赏
  • 举报
回复
顺序是这样:
1. 包含EXE文件的目录,
3. Windows系统目录,
4. Windows目录,
2. 进程的当前工作目录,
5. 列在Path环境变量中的一系列目录。

其实道理很简单,你要让系统知道该到哪里去找dll文件。如果是一个小的“绿色”软件,那最好不要用dll,就一个exe用起来更方便。
Cacar 2008-09-15
  • 打赏
  • 举报
回复
难道,静态链接,dll必须这样么?这样一来就必须要“安装”了.......一个小的工具软件,发布的时候想尽可能简单,尽可能不用打包,能“绿色发布”最好....还有什么好办法么?
Windows将遵循下面的搜索顺序来定位DLL:
1. 包含EXE文件的目录,
2. 进程的当前工作目录,
3. Windows系统目录,
4. Windows目录,
5. 列在Path环境变量中的一系列目录。
Cacar 2008-09-15
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 sys0001 的回复:]
SetDllDirectory,不过此函数要XP SP1以上才可以用

其他系统可以用SetCurrentDirectory
[/Quote]
在哪里写这句话呢?MFC程序,一开始就提示找不到dll...
sys0001 2008-09-14
  • 打赏
  • 举报
回复
SetDllDirectory,不过此函数要XP SP1以上才可以用

其他系统可以用SetCurrentDirectory
Cacar 2008-09-14
  • 打赏
  • 举报
回复
不想用LoadLibrary......就是如何让vc编译的程序知道去工作目录中的bin目录寻找dll,而不是只在工作目录下找...
发行的时候dll放在相对路径bin\\中,可程序只会在所在目录找....难道要在安装程序修改环境变量加上个.\\bin不成?
lizhigang34 2008-09-13
  • 打赏
  • 举报
回复

LoadLibrary("bin\\**.dll");
hacksouls 2008-09-13
  • 打赏
  • 举报
回复
你是不是直接有的导入或者导出函数用的DLL里的函数啊。。。如果是这样子的话就不行的。不要用导入函数用dll里的函数。。。直接调用LoadLibrary 加载dll的完整路径就行了,这个函数加载的时候他会自己加载dllwinmain你的函数的,在dll的入口点加上你要调用的函数,它就会自己调用了。
fox000002 2008-09-13
  • 打赏
  • 举报
回复
把编译出的 exe 和 dll 文件都输出到同一个 bin 目录吧

设 PATH 也行
用户 昵称 2008-09-13
  • 打赏
  • 举报
回复
俺一直用程序所在的路径作为路径,从__argv[ 0 ]里面得到程序所在的路径。
oyster2008 2008-09-13
  • 打赏
  • 举报
回复
在VC的IDE中运行程序时,运行的当前目录是工程目录
你可以设置这个目录为你的bin目录,就可以了,不需要设置环境变量
sjdev 2008-09-13
  • 打赏
  • 举报
回复
楼主的问题问的好,我也一直在找有没有这样的API,后来就一直没找到。
后来我想想,其实也可以用其他方法做到:
可以得到.exe的路径吧,然后用这个路径做运算,就可以得到和.exe相关的其它路径吧,然后组合吧。(如楼上所说,用完整路径)
cnzdgs 2008-09-13
  • 打赏
  • 举报
回复
LoadLibrary使用完整路径,或者将bin路径添加到path环境变量中。
zhoujianhei 2008-09-13
  • 打赏
  • 举报
回复
1. 在工具-》选项-》中设置。
2. 设置修改系统变量,我的电脑-》属性-》高级-》环境变量,对应的PATH。
qqwx_1986 2008-09-13
  • 打赏
  • 举报
回复
不知道 学习

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧