【问题标题】:Lowering a Visual C++ 2010 framework target降低 Visual C++ 2010 框架目标
【发布时间】:2012-07-11 19:37:51
【问题描述】:

我浏览了 StackOverflow,但找不到任何实用的解决方案来解决看似简单的解决方案:我有一堆 .Net 项目,这些项目是在 VS2005 或 VS2008 中开发的,我将它们导入到VS2010。其中之一是一个 C++ 项目,它目前针对框架 4.0(不是我选择的)。我们的一位客户在运行此应用程序时遇到问题,缺少 MSVCP100D.dll。我检查了这个线程what is MSVCP100D.dll?,最被接受的答案很简单:让客户端安装 Microsoft Visual C++ 2010 Redistributable Package。但是,客户端固执地不安装它,而且我知道他们安装了 Microsoft Visual C++ 2008 Redistributable。所以,如果我的结论是正确的,并且 MSVCP100D.dll 是 VS2010 的新手,我可以只针对以前的框架版本,在 VS2010 中重建项目,我会很高兴。问题是:我如何获得 VC++ 目标框架?我可以找到一些更改 C# 和 VB 项目的指南,但没有关于 VC++ 的。有什么指点吗?

编辑:对于那些建议我在发布模式下编译它的人:我是!有人指出,“D”代表调试,这很奇怪。

【问题讨论】:

  • 您确实看到这是库的调试版本(不能 [合法] 重新分发)?
  • 你试过在release模式下编译你的程序吗? MSVCP100D.DLL 是运行时库的debug 版本。这在您链接到的问题的已接受答案中进行了解释。
  • 好吧,我改变了平台工具集,确保我在发布模式下编译(虽然我之前很确定)并将它发送出去(虽然当你在你的机器)。收到支持部门的反馈后,我会尽快回复
  • 与其将其发送到任何地方进行测试,不如使用 Dependency Walker 之类的东西来验证您没有任何对调试 DLL 的引用,然后再给其他人带来麻烦。

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


【解决方案1】:

实际上,您使用的是运行时的调试版本(即“D”)。您是否尝试使用非调试版本进行编译?

要考虑的另一种可能性是与运行时库进行静态链接。你的程序会更大,但不会有 DLL 依赖。

【讨论】:

  • 感谢有关“D”的信息,尽管我很确定我是在发布模式下编译的。另外,我对静态链接 .dll 不是很感兴趣,因为它可能会导致某种“链依赖性反应”^^
【解决方案2】:

进入项目的属性。

在左侧,进入配置属性 > 常规

查看平台工具集的价值。从下拉列表中选择 v90 以定位 2008。

更多详情请参见此处: Visual C++ 2010 compatibility with VC 2008

更多详情请参见此处: http://blogs.msdn.com/b/vcblog/archive/2009/12/08/c-native-multi-targeting.aspx

正如 Dark Falcon 提到的,这是运行时的调试版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 2014-06-05
    相关资源
    最近更新 更多