【发布时间】:2021-10-04 20:46:14
【问题描述】:
我一直在尝试将一些 DLL 库与我的 C 程序捆绑在一起。我可以将我需要的 DLL 粘贴到可执行文件的目录中,它工作正常。
我需要将可执行文件夹中的文件整理到其他文件夹中。 我的问题是,每当我将 DLL 文件移动到另一个文件夹(在可执行目录中)时,可执行文件都无法找到这些 DLL 文件。
根据这张照片:
我不想向环境路径添加新值,也不想接触可执行目录之外的其他文件夹。 有没有办法告诉我的可执行文件在我的可执行文件目录的文件夹中查找 DLL 文件?我可以将 DLLs 文件夹的名称更改为另一个名称,以便可执行文件可以访问这些文件吗?请帮帮我!
编辑:我尝试使用chdir() 函数更改“当前目录”。我的方法不起作用,知道为什么吗?
#include <unistd.h> //Used for chdir()
int Start(int argc, char *argv[]);
int main(int argc, char *argv[]){
chdir("/bin/"); //change the "current directory" to "bin/"
return Start(argc, argv);
}
#include "./program.c" //Includes the `Start()` function
【问题讨论】:
-
我不知道具体,所以只是一个评论。但逻辑要求可执行文件需要知道在哪里可以找到 DLLS。如果它们不在某个环境(例如 Windows)已经检查过的地方,并且它们不在可执行文件知道的地方(即可执行文件目录
./),那么剩下的选择是对可执行文件中的路径进行硬编码(如果可能的话),这似乎不是一个好主意。 -
将 DLL 与可执行文件放在同一目录有什么问题?这就是通常的做法。
-
@Jabberwock,我只是希望文件更有条理。
-
@EnderAdel 这没什么用,现在程序是通过开始菜单或某些链接或命令行启动的。没有人应该浏览到可执行文件所在的目录并双击可执行文件。
-
@Jabberwocky,我知道。问题是有问题的程序不是我的,我需要这个“程序模板”中的所有文件都易于理解和组织。