如果在错误中发现有“cxx11”的字样

如果在错误中发现有“cxx11”的字样,如:

…/…/…/lib/libfrvt_11_authenmetric_001.so:对‘cv::error(int, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, char const*, char const*, int)’未定义的引用

原因是:新版本使用旧版本编译器编译出来的代码或库,旧版本编码过程中使用了C++11 的标准。要在系统中关闭C++11标准。

解决办法:
要在编译时或者在系统中关闭C++11标准。

第一种:在编译的时候加上-D_GLIBCXX_USE_CXX11_ABI=0(参考《g++命令行参数》的-Dmacro=defn部分)。
第二种:在每个源文件中添加一个宏定义:# define _GLIBCXX_USE_CXX11_ABI 0。
第三钟:在/usr/include/c++/8/x86_64-redhat-linux/bits/c++config.h中,把# define _GLIBCXX_USE_CXX11_ABI 1改为# define _GLIBCXX_USE_CXX11_ABI 0

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: CMake确实没有enable_cxx11这个选项。不过,可以通过设置CMAKE_CXX_STANDARD变量来指定C++标准版本,例如设置为C++11可以使用以下命令: set(CMAKE_CXX_STANDARD 11) 这样就可以在编译时使用C++11标准了。 ### 回答2: CMake是一款用于管理和构建软件的跨平台工具,它可以自动地生成Makefile和Visual C++ project文件,并且能够支持多种编译器,包括GCC、Clang、MSVC等。CMake没有enable_cxx11的原因是C++11标准在其推出之初还未被广泛普及,因此CMake的开发者并没有将这一选项纳入到其。 更准确地说,CMake并没有直接提供enable_cxx11这个选项,但是它提供了一些类似的选项,如: 1. CMAKE_CXX_STANDARD:该选项可以用于指定编译器对应的C++标准,默认值为98,可以手动设置为C++11、C++14、C++17等版本。 2. CMAKE_CXX_FLAGS:该选项可以用于向编译器传递额外的编译选项,例如"-std=c++11"参数表示使用C++11标准进行编译。在CMake,可以使用以下方式设置该选项: ``` set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") ``` 3. target_compile_features:该选项可以用于为目标设置应该支持的语言特性。例如,以下代码将向hello_world目标添加支持C++11的特性: ``` target_compile_features(hello_world PRIVATE cxx_std_11) ``` 综上所述,虽然CMake没有明确的enable_cxx11选项,但是可以通过使用上述类似的选项实现对C++11标准的支持。除此之外,由于CMake具有高度的灵活性和可扩展性,开发者也可以根据自己的需求进行相应的配置和修改。 ### 回答3: CMake是一种跨平台的编译工具,它提供了丰富的命令和选项来控制生成的构建过程。在使用CMake构建C++项目时,我们可能会想要启用C++11标准或更高版本的功能,例如显式类型转换、lambda表达式等,以提高代码的简洁性和可读性。在这种情况下,我们通常会尝试使用CMake选项“enable_cxx11”来启用C++11支持。 然而,在实际的使用,我们会发现CMake并没有“enable_cxx11”选项。那么为什么会出现这种情况呢? 首先,需要明确的是,“enable_cxx11”并不是CMake自带的选项,而是一些常见的CMake项目模板或文档给出的示例选项。实际上,在CMake的官方文档并没有提到这个选项,因为CMake本身已经默认启用了C++11支持。具体而言,CMake会通过检测编译器版本和目标系统平台的特性,自动选择合适的C++标准,并生成相应的编译选项。 例如,在使用GNU编译器、Clang或Visual Studio时,我们可以通过在CMakeLists.txt添加以下语句来启用C++11支持: ```cmake set(CMAKE_CXX_STANDARD 11) ``` 这将告诉CMake使用C++11标准进行编译,生成对应的编译选项。我们也可以使用更高版本的C++标准,例如C++14、C++17等: ```cmake set(CMAKE_CXX_STANDARD 14) ``` 需要注意的是,这种方式只是告诉CMake选择编译器选项,而并不会检查代码是否符合C++11标准。因此,在实际的项目,我们仍然需要仔细检查代码并确保它们符合标准规范,以免出现编译错误或未定义行为。 总之,虽然CMake没有“enable_cxx11”选项,但我们仍然可以通过设置CMAKE_CXX_STANDARD变量来启用所需的C++标准支持。这种方式比较简单、灵活,而且与CMake的自动检测机制兼容,可以适应不同的编译器和平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值