【发布时间】:2012-05-02 18:48:53
【问题描述】:
我有一个使用 Visual Studio 2010 创建的 C++/CLI 项目,该项目面向 .NET Framework 3.5 和 PlatformToolset v90。最初它请求版本 9.0.21022.8 的 VC CRT,但如果我包含 atlbase.h 标头,则它请求版本 9.0.30729.6161 的 VC CRT。 为什么会这样?以及如何在不包含 atlbase.h 的情况下使其目标 9.0.30729.6161?
我尝试定义宏 _BIND_TO_CURRENT_CRT_VERSION=1 和 _BIND_TO_CURRENT_VCLIBS_VERSION=1 但这没有帮助。
【问题讨论】:
-
如果您使用 C++/CLI,为什么还需要 ATL?要么做 COM(并使用 ATL,和普通的 C++),要么做 .NET。不要两者都做,这是自找麻烦。
-
我不需要 ATL,我需要目标 9.0.30729.6161。但我只能通过包含 atlbase.h 来实现这一点。所以问题是我怎样才能摆脱 atlbase.h 但仍以 9.0.30729.6161 为目标?
-
你必须安装VS2008才能做目标V9.0。确保您拥有 VS2008 的 SP1。卸载+重新安装所有东西应该可以解决它(我从来没有遇到过这样的问题)。如果您不想为 2 个许可证付费,它可以与 VC++2008 express 一起使用。
-
我确实有带有 SP1 的 VS2008。很抱歉没有提到这一点。