【发布时间】:2013-06-29 12:25:28
【问题描述】:
我是 C++ 的“隐藏/黑暗的地方”的新手,我想知道如何从不同目录或当前可执行文件正在运行的目录中的子目录加载 .dll 文件
例如:
./MyAppDirectory
/MyApp.exe
/SomeDLL.dll
/AnotherDLL.dll
/SubDirectory
/SomeDLL2.dll
/AnotherDLL2.dll
/YetAnotherDLL.dll
/...
所以“MyApp.exe”会自动从它的根文件夹“MyAppDirectory”加载“SomeDLL.dll”和“AnotherDLL.dll”但是我也希望能够加载“SomeDLL2.dll”、“AnotherDLL2.dll”、 “MyAppDirectory”文件夹内的“SubDirectory”文件夹中的“YetAnotherDLL.dll”等。
我一直在做一些搜索,我发现唯一的解决方案是:
- 1) 修改可执行文件的工作目录。
- 2) 将 DLL 文件放入 Windows 根目录。
- 3) 修改 PATH 环境变量。
但它们都有一些不好的方面(这里不值一提),这不是我真正需要的。另一个解决方案是通过“应用程序特定路径!”这涉及使用 Windows 注册表,似乎比前面提到的要好一些。
但是我需要能够使用 C++ 在“MyApp.exe”中执行此操作,而无需使用外部方法。
我使用的是 MinGW 4.7.2,我的 IDE 是 Code::Blocks 12.11,我的操作系统是 Windows XP SP3 Pro x86。
任何参考、教程、文档、示例等都被接受,感谢您的宝贵时间:D
【问题讨论】:
-
您的所有三个逐项列表都是坏主意。不要做任何这些。
标签: c++ dll load directory external