2

是否可以定义一段代码用 Cxx11 编译,但其余部分使用 libstdc++6 的兼容性 ABI?

例子:

// Compatibility ABI
int myvar = 0;
std::string mystring = "hello";

// This method is from another library
// that has been compiled with Cxx11
call_routine_ext_library(mystring);

// Compatibility ABI
myvar += 2;

我的整个系统都是在兼容模式下编译的,除了一个用 Cxx11 编译的外部库。是否存在一个预处理器,允许您使用新的 ABI 手动选择要编译的代码的某些部分,就像您在编译器行上定义 D_GLIBCXX_USE_CXX11_ABI=1 一样?

调用方法call_routine_ext_library时出现的错误是:

undefined reference to `call_routine_ext_library(std::string const&)'

因为该库包含以下内容:

call_routine_ext_library(std::__cxx11::basic_string<char, std::char_traits<char>)

所以我希望在编译传递给该方法的字符串时可以强制编译器使用 Cxx11 模式。当您的代码在没有它的情况下编译时,是否有任何方法可以链接到使用 Cxx11 编译的二进制文件?

4

0 回答 0