我正在用C++11开发一个应用程序,使用g++-4.7和-std=c++0x。
我的应用程序链接到一些用g++-4.7编译的共享库,但是没有-std=c++0x指令。
不幸的是,没有工作,这意味着我在使用外部库类和方法时有一些奇怪的行为。(当然,在没有-std=c++0x的情况下编译我的应用程序很好)。
extern C关键字)?发布于 2012-04-04 15:20:19
标准库已更改,-std=c++0x编译器标志将确定正在使用的库的哪一部分。通过尝试在同一个程序中使用两个版本,您就违反了一个定义规则(对于标准库中的每个已使用元素,您都有两个相同标识符的定义)。
我不认为有什么简单的事情可以克服这个限制。您必须确保只使用库的一个版本(即在包含标准标头之前定义适当的宏以禁用这些库中的C++11 ),即使这样,我也不确定生成的代码是否仍然不会破坏C++03库代码(如果C++11扩展以不同的方式编译C++03库代码)。
https://stackoverflow.com/questions/10014042
复制相似问题