注意:这个问题不关于MFC / CRT DLL与/ .manifest
文件的链接,避免清单查找(即从当前路径强制加载),VC redist安装和类似问题。
我有一组DLL,由不同的应用程序使用。这些应用程序和DLL有一些产品版本(如7.0,8.0等)。总而言之,让我使用一个DLL和两个应用程序。
App.exe
取决于Core.DLL
GoodApp.exe
也取决于Core.DLL
App.EXE
需要版本7.0的Core.DLL
。类似的,版本X的GoodApp
将需要版本X的DLL。
由于DLL将由不同的应用程序共享,我已将DLL放入一些通用路径。这样可以避免将DLL粘贴到所有路径上。为此设置了一些\SharedDLL
路径。并且(假设),我为此设置了PATH
变量。
因此,当任何应用程序加载时,OS将只从这个公共路径加载Core.DLL。
一切都很好。但是如果App.exe是64位/ Debug或其他配置怎么办? common-DLL路径不能包含所有DLL(32/64,Debug / Release)。在类似的行上,版本Y的App.exe
不能使用版本X的Core.DLL
(不 X> Y,或Y> X,但只是 X!= Y ,X版本的App不能使用版本Y的DLL。)
简而言之, App-32bit-Release-VersionX ,需要完全 DLL-32bit-Release-VersionX ,而不是别的!由于DLL名称相同,我不能将它们放在一个共同的路径中。而且,因为有许多依赖于Core.DLL
的应用程序(以及DLL!),我只是不想浪费空间和时间将DLL复制到EXE的路径中。
是的,我使用post-build-setup将DLL适当地复制到所有路径中。这解决了时间,但浪费了空间。如果有新的应用程序,必须修改PBS以复制到新的路径。
问题是:如何利用Windows / MFC / CRT DLL使用的.manifest功能?他们确实利用WinSxS
文件夹。
答案 0 :(得分:1)