代码之家  ›  专栏  ›  技术社区  ›  Navaneeth K N

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

  •  3
  • Navaneeth K N  · 技术社区  · 14 年前

    我有一个应用程序 wxWidgets 作为一个UI框架,使用Visual Studio 2010在Windows 7机器上编译。我正在连接 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. 在构建可执行文件(可在许多计算机上运行)时,我还需要注意哪些常见问题?

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

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

    任何帮助都将不胜感激。

    3 回复  |  直到 14 年前
        1
  •  2
  •   Goz    14 年前

    它试图在没有调试DLL的计算机上使用该DLL。

    您的问题是由于msvcr100d.dll是由后面的d指示的仅调试的dll。

    因此,您没有使用/MT,而是实际使用/MDd。如果使用/MT,则它将尝试加载该DLL。。。

    所以在回答你的问题时:

    1. 我更喜欢静态链接到运行时。
    2. 这真的不是问题。不要试图在32位操作系统上运行64位编译的二进制文件。
    3. 对。
    4. 小心你的最低规格。如果需要支持奔腾3,请不要使用SSE4。。。等。
        2
  •  0
  •   Loduwijk    14 年前

    这似乎和我在谷歌上搜索“will x86 exe在x64上工作”时的第二个问题一样;它并不能回答所有问题,但它有一些答案。

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

    如果你不看第二个,或者你查询其他一些东西,你可能会发现更多类似的信息。

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

        3
  •  -1
  •   Alex F    14 年前
    1. 是的,有必要提供VC++可重新分配的软件包。最好的方法是使用Visual Studio Setaul和部署项目创建一个安装包。

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

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