我已从VS2015移至VS2019。我已经创建了一个部署,并且在本地良好,在这三台计算机上。但是,当我将测试MSI运送到旧笔记本电脑时,我们找不到MFC140.dll。我在我的一个dll中找到了依赖项,以为它与不将其移至UNICODE有关。做到了,它仍然取决于MFC140U.dll
我有
toolset (VS 2019)vs142
SDK Version 10.0(latest installed)
我用Google搜索并拔出头发。但是灯没有亮。已检查,这也是我构建的第二个dll的情况。
因此,我检查了要部署的另一个应用程序。它不使用我的任何dll。但是,它也依赖于MFC140U.dll和MFC142U.dll。此链接中唯一链接的库是BOOST和SQLITE3。而且这些没有任何MFC依赖项。这只会增加我的困惑。
对我而言唯一有意义的是,vs142构建具有约140个依赖项,而部署系统并未对此有所帮助。请注意,部署并没有像vs2015那样使用install shield完成。
是的,我可以通过运送MFC140U.dll来修复它,但这似乎不正确。我能判断的只是我还是Microsoft出了问题。
更新:
我用VS2019创建了一个新的MFC项目,并研究了依赖项。同样,这与Microsoft有关。而且看起来部署系统包含MFC142x dll,但不包含必需的MFC140。
答案 0 :(得分:2)
您没有提及您的“部署系统”是什么,所以我不确定您在这里使用的是什么安装程序技术。
但是您的应用程序或您的一个DLL依赖于MFC。如果不需要MFC,则需要在有问题的exe或dll上检查构建设置。另一个要检查的项目是您是否在项目中错误地包含了afx.h标头。 afx.h具有#pragma comment(lib,xxx)条目,这些条目可根据您的构建选项解析为正确的mfc140xxx.lib。
如果MFC依赖关系是合法的,则应使用为此目的而设计的vsredist软件包安装VC运行时组件。这些应该以类似于C:\ Program Files(x86)\ Microsoft Visual Studio \ 2019 \ Enterprise \ VC \ Redist \ MSVC \ 14.21.27702
的路径安装到硬盘上或者,您可以使用以下链接下载最新版本:
The latest supported Visual C++ downloads
此致