lw 发表于 2008-2-23 10:53:05

问个关于PATH的问题一直没有理解

就是说,在WIN32下面的那个PATH变量,一旦CMD下面,某些EXE所在的路径被指定在PATH下面了,那么这些EXE可以不需要完全的路径直接运行,

接下来的一个问题就是,一个EXE需要若干DLL的情况,这些DLL分散在不同的文件夹下,但是我发现如果直接把所有的路径都指定完了,EXE还是会因为DLL不存在而报错……这样的话PATH没有起到作用?

如果所有的EXE都如此也就罢了DLL和EXE在同一个路径下,
问题是很多并不是这样,比如KERNEL32.DLL就在SYSTEM32下面啊……于是很郁闷…………
应该怎么做呢?我想要的是把公用的DLL放置在同一个目录下面(比如就是VC的MSVCRT80),然后其他的EXE分别在各自的目录下……

shawind 发表于 2008-2-26 12:40:08

这个方法应该可行。我也这样设过。
当时用的是SDL,把SDL.dll放在system32下自己建的myruntime目录下,然后把c:\\windows\\system32\\myruntime目录设到系统path下,就可以实现exe和dll不在同一个目录下。

如果不行,在设好后,注销重登陆一次试试,应该没问题的。

还有一种可能,是不是在用WINAPI来调用的DLL的时候,写了绝对路径,或是path中查不到的相对路径?

john_he 发表于 2008-2-26 13:17:24

对于所有EXE和DLL(也就是模组),系统都会先查找宿主EXE所在目录,然后是PATH变量里的目录,除非使用了绝对路径……

lw 发表于 2008-3-1 08:39:28

那就奇怪了,偶肯定设置了PATH!

set PATH = "D:\\test\\bin\\";%PATH%
有什么问题呢……

shawind 发表于 2008-3-1 11:18:23

set path = 后面的那个路径是不用加""号的.
cmd命令中设置的路径在cmd关闭后就失效了.
要长期使用还是在"我的电脑"-"属性"那里设置.
不知道用winapi的SetEnvironmentVariable设出来的path是不是长期保存的.

lw 发表于 2008-3-2 19:11:41

当然不回关闭了- -|||这点偶还是知道的,否则应该直接去修改环境变量的啊……
页: [1]
查看完整版本: 问个关于PATH的问题一直没有理解