部署使用C ++开发的应用程序

我有一个应用程序使用wxWidgets作为UI框架,并在Windows 7机器上使用Visual Studio 2010进行编译。 我正在静态链接wxWidgets 。 我的应用程序也使用C DLL进行处理。

现在我试图在另一台新安装的机器(Win7)上运行这个应用程序。 这没有开发者环境设置。 我已经复制应用程序的可执行文件,支持DLL和其他支持文本文件到本机。

当应用程序启动时,它发出以下消息。

The program failed to start because MSVCR100d.DLL is missing from your computer. Try reinstalling the program to fix this problem The program failed to start because MSVCR100d.DLL is missing from your computer. Try reinstalling the program to fix this problem

我想我的C库是使用debugging版本,并在Release模式编译解决了这个问题。 但它仍然要求MSVCR100.dll 。 我认为解决方法是安装VC ++可再发行组件包。 但不知道这是最好的办法。

这是我的问题。

  1. 你通常如何部署应用程序? 你也提供VC ++可再发行组件包吗?
  2. 我正在一个64位的机器上编译,并在一个32位的testing。 这个可以吗? 还是我需要分别编译32位?
  3. 我可以静态链接到运行时库吗? 所以我可以只运送我的DLL和其他文件。
  4. 在构build可在许多机器上运行的可执行文件时,我应该了解哪些其他常见事项?

以下是我可能相关的一些设置。

 General : Use of MFC : Use standard windows libraries Use of ATL : Not using C/C++ : Runtime library : Multi-threaded(/MT) 

任何帮助,将不胜感激。

它试图在没有它的机器上使用只调试DLL。

你的问题来自于msvcr100d.dll是一个只有dll的调试dll。

因此,你不使用/ MT你实际上使用/ MDd。 如果你使用/ MT,那么它将尝试并加载该DLL …

所以回答你的问题:

  1. 我宁愿静态链接运行时间。
  2. 那真的不是问题。 只是不要尝试在32位操作系统上运行64位编译二进制文件。
  3. 是。
  4. 谨防你的最低规格。 即,如果您需要支持Pentium 3,请不要使用SSE4等。

这似乎是同样的问题,当我搜索“将x86的x64工作在x64”第二次打击; 它不会回答所有的问题,但它有一些答案。

http://social.msdn.microsoft.com/Forums/en/netfx64bit/thread/5ad0ff2c-558c-43ba-a59d-9cd0a0785103

你可能会发现更多的相似的信息,如果你超越第二个,并且如果你查询其他一些事情。

至于VC ++运行时的东西,我自己避免了MS的C ++版本,就像鼠疫一样,所以没有经验,但我仍然认为所有现代Windows计算机都应该有所有必要的运行时组件(VC ++,.NET等)已经包括在内。

  1. 是的,有必要提供VC ++可再发行组件包。 最好的方法是使用Visual Studio Setaul和Deployment项目来创建安装程序包。

  2. 如果你编译32位的可执行文件,这是可以的。

  3. 我不建议这样做,这样巨大的可执行文件看起来不专业。