我已成功将一个大型MFC项目划分为几个较小的DLL项目。现在我想在我的应用程序的文件夹中有一个名为“DLL”的单独文件夹,其中放置了子项目中的所有DLL。
有人可以给我指导如何实现这个目标吗?
答案 0 :(得分:4)
如果使用LoadLibrary,则只需显式指定加载的DLL的完整路径。
如果DLL是隐式链接的,您可以通过两种方式执行此操作。
最好的解决方案是简单地将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"