构建c++项目以包含所有msvc dll

Build C++ project to include ALL msvc dlls

本文关键字:msvc dll 包含所 c++ 项目 构建      更新时间:2023-10-16

我有一个简单的c++程序。我只想构建exe,然后把它交给另一个完整的非开发机器上的人。有没有一种方法可以在Visual Studio中构建这样一个简单的,单一源文件,而不需要所有的废话 ?我已经将程序更改为MT模式编译,而不是静态链接msvcr.dll文件的MTD,但现在它正在寻找msvcp.dll文件。我怎样才能使我的可执行文件1)不包含所有这些垃圾文件,或者2)静态地将它们全部链接起来,这样我就有一个文件可以传输到另一台Windows PC上运行

谢谢

如果使用/MT编译需要msvcr100.dll,则应用程序中包含的某些内容可能试图与之链接,可能是第三方组件。我会检查任何第三方库和相关的。

MSVCP100.DLL是c++标准库。您可能需要仔细检查它是否正在寻找MSVCP100D.DLL,这是调试版本;混合发布和调试模式库可能会导致这种情况。

MSVCRT100.DLL为C运行时库,MSVCP100.DLL为c++标准库。如果您使用/MT构建,这两个库都应该消失,在这种情况下,应该使用这些库的静态版本。

我的猜测是,你要么切换到/MT后没有完全重建你的应用程序,或者你的项目中的一个或多个文件有自定义设置,包括/MD。您可能需要在显示/MT的页面上打开属性对话框,然后逐个单击所有源文件,以验证它们中没有一个仍然显示/MD。