C++ 我的C++;DDL在新版本上需要MSVCR100.DLL,但在上一版本上不需要

C++ 我的C++;DDL在新版本上需要MSVCR100.DLL,但在上一版本上不需要,c++,.net,dll,static-linking,msvcr100.dll,C++,.net,Dll,Static Linking,Msvcr100.dll,我以前使用VisualStudio2010开发了一个C++/CLI动态库项目,现在将其用作AdobeAIR应用程序上的一个ANE。以前版本的DLL与Windows 7和Windows 7 SP1兼容,不需要安装任何其他东西。现在,在新版本上,当我在三台Windows7SP1上测试它时,出现了一个错误,指出当前计算机上没有安装MSVCR100.DLL。除了主.cpp文件之外,我没有对项目进行任何更改,所以我不明白这是怎么回事 新版本中使用(添加)了以下名称空间: 使用名称空间系统::诊断 使用名

我以前使用VisualStudio2010开发了一个C++/CLI动态库项目,现在将其用作AdobeAIR应用程序上的一个ANE。以前版本的DLL与Windows 7和Windows 7 SP1兼容,不需要安装任何其他东西。现在,在新版本上,当我在三台Windows7SP1上测试它时,出现了一个错误,指出当前计算机上没有安装MSVCR100.DLL。除了主.cpp文件之外,我没有对项目进行任何更改,所以我不明白这是怎么回事

新版本中使用(添加)了以下名称空间:

  • 使用名称空间系统::诊断
  • 使用名称空间System::Net::Sockets
  • 使用名称空间系统::线程
新版本中使用(添加)了以下类别:

  • 网络接口
  • 系统::集合::IEnumerator
  • i接口属性
  • 网关IP地址信息集合
  • 网关IP地址信息
  • AddressFamily::互联网
  • 单色信息
  • ProcessStartInfo
  • 过程
  • 线程命令
  • 线
  • 螺纹起点
这些类中的一个可以使我的DLL需要在计算机上安装MSVCR100.DLL吗?为什么DLL突然开始需要MSVCR100.DLL?有人知道吗

我已尝试将运行时库从多线程DLL(/MD)更改为多线程(/MT),但尝试在Visual Studio上构建时出现以下错误:“/clr”和“/mtd”命令行选项不兼容。因此,这一选择并不可行


如果有人能告诉我如何解决这个问题,我将非常感激。当然,解决方案不能安装C++ 2010可重分配。我需要它是一个干净的解决方案,对我的最终用户没有额外要求。

部署C++/CLI项目时,始终需要msvcr100.dll。它是一个通常已经可用的文件,但并不总是可用的。所以,只要确保你总是照顾好它,这样它就永远不会出错。您可以使用可再发行的安装程序,只是更容易将文件与您自己的DLL一起复制。Hello@HansPassant,谢谢您的回复。如果是这样的话,它在以前的版本中是如何兼容的?正如我所说的,很多计算机的c:\windows\syswow64中已经有msvcr100.dll。由其他人友好的安装人员安装。你不能指望那种友好。告诉用户下载并安装redist安装程序,嗯,你可以问,但你通常会接到一个电话。只需将DLL与其他可执行文件一起部署,即可使其“干净”。很简单,没什么好担心的。@HansPassant我的应用程序是完全可移植的,所以它不需要安装程序,它只是作为一个zip文件发送的。有没有办法将32位msvcr100.dll和64位msvcr100.dll部署在同一个zip文件中,或者我应该有两个不同的zip文件,一个用于32位,另一个用于64位?它必须与C++/CLI程序集的风格相同。其中包含非托管代码,因此只有在实际构建程序集的两个不同版本时才考虑此问题。一只小鸟告诉我你不会这么做。如果你这样做,那么两种不同的方式。拉链是显而易见的方法。就像你需要两个不同的安装程序一样。