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

时间:2010-11-28 12:53:01

标签: c++ c windows compilation visual-studio-2010

我有一个应用程序,它使用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

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

以下是我的问题。

  1. 您如何正常部署该应用程序?你也提供VC ++可再发行组件吗?
  2. 我正在64位机器上进行编译,并在32位上进行测试。这个可以吗?或者我需要单独编译32位?
  3. 我可以静态链接运行时库吗?这样我就可以发送我的DLL和其他文件了。
  4. 在构建可在多台计算机上运行的可执行文件时,我应该注意哪些其他常见问题?
  5. 以下是我可能相关的一些设置。

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

    任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

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

你的问题是因为msvcr100d.dll是一个只有调试的dll,由尾随d表示。

因此你没有使用/ MT你实际上正在使用/ MDd。如果您使用/ MT那么它将尝试加载该DLL ...

所以回答你的问题:

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

答案 1 :(得分:0)

当我用Google搜索“将x86 exe工作在x64上”时,这似乎与第二次点击的问题相同;它没有回答所有问题,但它有一些答案。

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

如果你超越第二个,你可以找到更多类似的信息,如果你查询其他一些东西。

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

答案 2 :(得分:-1)

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

  2. 如果编译32位可执行文件就可以了。

  3. 我不推荐这样,这样庞大的可执行文件看起来不专业。