【发布时间】:2015-07-30 12:57:20
【问题描述】:
所以我在这里很困惑。我有一个库“A”,是我用 VS2013 用 C++ 编写的,可以成功地在项目“X”中包含和构建它。
Project "X" 是同样在 VS2013 中开发的 MFC 应用,其Platform Toolset 值设置为VS2013。它恰好是一个 Win32 应用程序。
我现在必须将库包含在另一个项目“Y”中(这是一个 VS2010 项目,但我(相信我)使用 VS 将它转换为 2013)。
项目“Y”不是 MFC 应用程序,而是一个 .dll,其 Platform Toolset 值也设置为 VS2013。它是一个 x64 应用程序。
但是,当我尝试构建“Y”时,我收到大量编译器错误,主要是因为该库使用 C++11 功能,而且显然 VS 不允许这样做。这些错误主要是向量括号初始化语法问题。例如。 non-aggregates cannot be initialized with initializer list。但除此之外,它也找不到strtoll 和report_rangecheckfailure 的符号。
但我不明白。据我所知,VS2013 应该支持这些功能,而且它出现在我的其他项目中。这里可能是什么问题?要使用 2013 编译器,我还需要做些什么吗?
编辑 更清楚地说,是这样的赋值给出了聚合编译器消息:
std::vector<std::string> paramVector = { "username", "time", "hours", "udata" };
【问题讨论】:
-
我会确保您使用的是 VS2013 更新 4,因为它修复了初始化列表的一些问题。我使用的模式就像你一直使用的那样,没有任何问题。
-
我正在更新 5,所以我应该没问题。这非常奇怪,尤其是因为就像我说的那样,这在使用相同版本 VS 的不同项目上正常工作。
-
您是否想让 win32(32 位)应用程序使用 x64 库(64 位)?
-
@Wilbert,不,“Y”设置为 x64 .dll,并使用 64 位库(libcurl 和 openssl)。我自己构建了这两个库。
标签: c++ visual-studio-2010 visual-studio c++11