是否可以定义一段要用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编译的二进制文件?