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

相关文章

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

C#文件复制异常:"未能找到文件"的解决方案与预防措施

《C#文件复制异常:未能找到文件的解决方案与预防措施》在C#开发中,文件操作是基础中的基础,但有时最基础的File.Copy()方法也会抛出令人困惑的异常,当targetFilePath设置为D:2... 目录一个看似简单的文件操作问题问题重现与错误分析错误代码示例错误信息根本原因分析全面解决方案1. 确保

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

Java利用@SneakyThrows注解提升异常处理效率详解

《Java利用@SneakyThrows注解提升异常处理效率详解》这篇文章将深度剖析@SneakyThrows的原理,用法,适用场景以及隐藏的陷阱,看看它如何让Java异常处理效率飙升50%,感兴趣的... 目录前言一、检查型异常的“诅咒”:为什么Java开发者讨厌它1.1 检查型异常的痛点1.2 为什么说

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数

C++ vector越界问题的完整解决方案

《C++vector越界问题的完整解决方案》在C++开发中,std::vector作为最常用的动态数组容器,其便捷性与性能优势使其成为处理可变长度数据的首选,然而,数组越界访问始终是威胁程序稳定性的... 目录引言一、vector越界的底层原理与危害1.1 越界访问的本质原因1.2 越界访问的实际危害二、基