C++常见异常汇总(三): fatal error: google/protobuf/port_def.inc

2024-09-08 02:36

本文主要是介绍C++常见异常汇总(三): fatal error: google/protobuf/port_def.inc,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1、fatal error : sw/redis++/redis.h
    • 2、fatal error: dwarf.h: No such file or directory
    • 3、fatal error: elfutils/libdw.h: No such file or directory
    • 4、fatal error: libunwind.h: No such file or directory
    • 5、fatal error: google/protobuf/port_def.inc
    • 6、error adding symbols: DSO missing from command line
    • 7、undefined reference to `timer_settime'
    • 8、fmt error: type_identity_t、basic_format_args

1、fatal error : sw/redis++/redis.h

需安装Redis C++ 相关环境。
git 搜索 hiredis、redis-plus-plus 源码,并执行如下命令:


unzip hiredis.zip -d ./ && cd hiredis && make -j12 && make install && cd .. && unzip redis-plus-plus.zip -d ./ && cd redis-plus-plus && \
mkdir build && cd build && cmake .. && make -j12 && make install

在这里插入图片描述在这里插入图片描述

2、fatal error: dwarf.h: No such file or directory

在这里插入图片描述

处理方案:

sudo apt install libdwarf-dev

在这里插入图片描述安装后,由于安装目录为: ./libdwarf/dwarf.h

在这里插入图片描述
CMakeList.txt 中Include:

在这里插入图片描述

3、fatal error: elfutils/libdw.h: No such file or directory

sudo apt-get install libdw-dev

如果还是不行,再执行如下:

sudo apt-get update
sudo apt-get install libelf1

在这里插入图片描述在这里插入图片描述

4、fatal error: libunwind.h: No such file or directory

sudo apt-get install libunwind-dev

在这里插入图片描述

5、fatal error: google/protobuf/port_def.inc

原因:Protobuf 路径在CMakeList中未正确配置

分别尝试不同颜色框中的方式:
在这里插入图片描述

6、error adding symbols: DSO missing from command line

原因: target_link_libraries 未连接正确

在这里插入图片描述在这里插入图片描述请检查 CMakeList.txt 中的 target_link_libraries
在这里插入图片描述

7、undefined reference to `timer_settime’

处理方案:增加 rt 连接库即可。

    target_link_libraries(sample  rt  )

在这里插入图片描述
在这里插入图片描述

8、fmt error: type_identity_t、basic_format_args

原因:spdlog 未找到自身目录下的fmt头文件,而是找到了系统目录下的头文件
在这里插入图片描述
解决方案:
(1)使用spdlog源码,编译到工程中;

(2)确保使用spdlog的代码,只在.cpp 中包含 spdlog 的头文件,在.h文件中,使用前置定义的方式,以减少头文件之间的关联依赖,确保被外部调用时,不依赖spdlog相关.h:

例如:

a.h 中:

namespace spdlog
{class logger;
}class A
{
public:A();private: std::shared_ptr<spdlog::logger> logger_main_;};

a.cpp 中:


#include "spdlog/spdlog.h"
#include "spdlog/sinks/rotating_file_sink.h" // support for rotating file loggingA::A()
{= auto sink_main = std::make_shared<spdlog::sinks::rotating_file_sink_mt>(log_path + "main.txt", 1024 * 1024 * 4, 10);sink_main->set_level(log_level_temp);spdlog::sinks_init_list sink_main_list = { sink_main };logger_main_ = std::make_shared<spdlog::logger>("main", sink_main_list.begin(), sink_main_list.end());logger_main_->set_level(log_level_temp);logger_main_->flush_on(log_level_temp);//Note:logger_main_->info(" hi you  ");}

这篇关于C++常见异常汇总(三): fatal error: google/protobuf/port_def.inc的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1146871

相关文章

C++中全局变量和局部变量的区别

《C++中全局变量和局部变量的区别》本文主要介绍了C++中全局变量和局部变量的区别,全局变量和局部变量在作用域和生命周期上有显著的区别,下面就来介绍一下,感兴趣的可以了解一下... 目录一、全局变量定义生命周期存储位置代码示例输出二、局部变量定义生命周期存储位置代码示例输出三、全局变量和局部变量的区别作用域

C++中assign函数的使用

《C++中assign函数的使用》在C++标准模板库中,std::list等容器都提供了assign成员函数,它比操作符更灵活,支持多种初始化方式,下面就来介绍一下assign的用法,具有一定的参考价... 目录​1.assign的基本功能​​语法​2. 具体用法示例​​​(1) 填充n个相同值​​(2)

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

Java 方法重载Overload常见误区及注意事项

《Java方法重载Overload常见误区及注意事项》Java方法重载允许同一类中同名方法通过参数类型、数量、顺序差异实现功能扩展,提升代码灵活性,核心条件为参数列表不同,不涉及返回类型、访问修饰符... 目录Java 方法重载(Overload)详解一、方法重载的核心条件二、构成方法重载的具体情况三、不构

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

SQL中如何添加数据(常见方法及示例)

《SQL中如何添加数据(常见方法及示例)》SQL全称为StructuredQueryLanguage,是一种用于管理关系数据库的标准编程语言,下面给大家介绍SQL中如何添加数据,感兴趣的朋友一起看看吧... 目录在mysql中,有多种方法可以添加数据。以下是一些常见的方法及其示例。1. 使用INSERT I

Python中反转字符串的常见方法小结

《Python中反转字符串的常见方法小结》在Python中,字符串对象没有内置的反转方法,然而,在实际开发中,我们经常会遇到需要反转字符串的场景,比如处理回文字符串、文本加密等,因此,掌握如何在Pyt... 目录python中反转字符串的方法技术背景实现步骤1. 使用切片2. 使用 reversed() 函