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

相关文章

Spring常见错误之Web嵌套对象校验失效解决办法

《Spring常见错误之Web嵌套对象校验失效解决办法》:本文主要介绍Spring常见错误之Web嵌套对象校验失效解决的相关资料,通过在Phone对象上添加@Valid注解,问题得以解决,需要的朋... 目录问题复现案例解析问题修正总结  问题复现当开发一个学籍管理系统时,我们会提供了一个 API 接口去

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

C++中实现调试日志输出

《C++中实现调试日志输出》在C++编程中,调试日志对于定位问题和优化代码至关重要,本文将介绍几种常用的调试日志输出方法,并教你如何在日志中添加时间戳,希望对大家有所帮助... 目录1. 使用 #ifdef _DEBUG 宏2. 加入时间戳:精确到毫秒3.Windows 和 MFC 中的调试日志方法MFC

深入理解C++ 空类大小

《深入理解C++空类大小》本文主要介绍了C++空类大小,规定空类大小为1字节,主要是为了保证对象的唯一性和可区分性,满足数组元素地址连续的要求,下面就来了解一下... 目录1. 保证对象的唯一性和可区分性2. 满足数组元素地址连续的要求3. 与C++的对象模型和内存管理机制相适配查看类对象内存在C++中,规

Java 枚举的常用技巧汇总

《Java枚举的常用技巧汇总》在Java中,枚举类型是一种特殊的数据类型,允许定义一组固定的常量,默认情况下,toString方法返回枚举常量的名称,本文提供了一个完整的代码示例,展示了如何在Jav... 目录一、枚举的基本概念1. 什么是枚举?2. 基本枚举示例3. 枚举的优势二、枚举的高级用法1. 枚举

C语言线程池的常见实现方式详解

《C语言线程池的常见实现方式详解》本文介绍了如何使用C语言实现一个基本的线程池,线程池的实现包括工作线程、任务队列、任务调度、线程池的初始化、任务添加、销毁等步骤,感兴趣的朋友跟随小编一起看看吧... 目录1. 线程池的基本结构2. 线程池的实现步骤3. 线程池的核心数据结构4. 线程池的详细实现4.1 初

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

Spring中Bean有关NullPointerException异常的原因分析

《Spring中Bean有关NullPointerException异常的原因分析》在Spring中使用@Autowired注解注入的bean不能在静态上下文中访问,否则会导致NullPointerE... 目录Spring中Bean有关NullPointerException异常的原因问题描述解决方案总结

Python中的异步:async 和 await以及操作中的事件循环、回调和异常

《Python中的异步:async和await以及操作中的事件循环、回调和异常》在现代编程中,异步操作在处理I/O密集型任务时,可以显著提高程序的性能和响应速度,Python提供了asyn... 目录引言什么是异步操作?python 中的异步编程基础async 和 await 关键字asyncio 模块理论