如何为应用程序的DLL创建单独的文件夹?

时间:2011-02-28 08:21:03

标签: c++ visual-studio visual-c++ dll mfc

我已成功将一个大型MFC项目划分为几个较小的DLL项目。现在我想在我的应用程序的文件夹中有一个名为“DLL”的单独文件夹,其中放置了子项目中的所有DLL。

有人可以给我指导如何实现这个目标吗?

3 个答案:

答案 0 :(得分:4)

如果使用LoadLibrary,则只需显式指定加载的DLL的完整路径。

如果DLL是隐式链接的,您可以通过两种方式执行此操作。

  • 让安装程序修改PATH变量。这是侵入性和“坏形式”
  • 编写一个“加载器”应用程序,在本地修改路径变量,然后执行真正的可执行文件。

最好的解决方案是简单地将DLL放在与可执行文件相同的目录中。

答案 1 :(得分:4)

DLL重定向是一个相当新的功能( Windows 2000 IIRC )。将您的DLL目录命名为<myapp>.exe.local,Windows将首先检查它是否通过LoadLibrary(Ex)加载了任何内容。这包括延迟加载的DLL。

答案 2 :(得分:-2)

编辑:正如Eric所指出的,这不起作用。遗憾。

Dynamic-Link Library Search Order。简而言之,您可以使用“HKEY_LOCAL_MACHINE \ SORTWARE \ Microsoft \ Windows \ CurrentVersion \ App Paths”键下的注册表项执行此操作。 如下所示的reg文件显示了:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\MyApp.exe]
@="C:\\Program Files\\MyCompany\\MyApp\\MyApp.exe"
"Path"="C:\\Program Files\\MyCompany\\MyApp\\MyDLLs"