【问题标题】:Running a windows 7 C++/Cli application in windows xp在 windows xp 中运行 windows 7 C++/Cli 应用程序
【发布时间】:2012-06-28 09:49:03
【问题描述】:

我在 windows 7 环境下的 Visual Studio 2010 中的 c++/cli 中创建了一个应用程序。它工作得很好。但是我后来才知道 xp 平台。现在我想在 windows xp 中安装我的应用程序。现在我觉得我遇到了一个大问题。我是否需要使用本机 c++ 在 windows xp 中再次重做应用程序,或者我可以在 xp 中安装 .net 并执行应用程序。请给我一些启发..

谢谢

【问题讨论】:

  • 当然,只需安装您的应用程序所针对的框架即可。
  • @arrowdodger ..thanks.. 但我在 Windows 7 中开发.. 会不会有问题..?
  • 好吧,在你的目标平台上测试它(安装和执行)!

标签: c++ windows-7 windows-xp c++-cli


【解决方案1】:

无需重做所有事情。安装 .Net 3.5 或 4(取决于您在 VS2010 中使用的内容)和本机代码的依赖项(例如 crt 可再发行组件)应该可以解决问题。

但是请注意,Windows vista/7 中的 kernel.dll 的某些功能在 Windows XP 中根本不存在。我曾经花了很长时间弄清楚 XP 不存在 InitializeSRWLock。解决此类问题可能非常困难,因此请确保您有一台运行 XP 的机器来测试所有内容。

【讨论】:

    【解决方案2】:

    此外,请确保您静态链接运行时库(或者如 stijn 所说,如果动态链接,则安装所需的依赖项),以便将程序中使用的所有库例程复制到最终的 EXE 文件中。

    在配置属性、C/C++、代码生成、运行时 库 -> 多线程 (/MT)

    另外,如果使用 MFC:

    Configuration Properties, General, Use of MFC -> 在静态中使用 MFC 图书馆

    另外,如果使用 ATL:

    配置属性、类型、ATL 的使用 -> 到 ATL 的静态链接

    参考:Static linking in vs2010 run-time

    【讨论】:

    • 请告诉我投反对票的原因。我在这里错过了什么吗?由于 C++/CLI 可以同时具有托管和非托管代码,这些难道不适用吗?
    • 可能是因为不需要静态链接?动态链接也有效..
    • 据我所知,如果我们使用 C 运行时的动态链接,则需要 MSVCP80.DLL,默认情况下 Windows XP 中不存在该文件。参考:msdn.microsoft.com/en-us/library/abx4dbyh(v=vs.80).aspx
    • 这就是为什么,在我的回答中,我说需要安装 crt 可再发行组件,以便安装 MSVCP/MSVCRT 等 dll
    • 对不起,我第一次阅读时没有看到。 -ve 投票顺便说一句是粗鲁的。至少它包含更具体的信息。我将编辑我的答案。
    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2013-09-07
    • 1970-01-01
    • 2013-01-30
    • 2013-03-09
    • 2011-11-28
    相关资源
    最近更新 更多