首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ SPDLOG编译错误:变量或字段‘set_error_handler’声明为空

C++ SPDLOG编译错误:变量或字段‘set_error_handler’声明为空
EN

Stack Overflow用户
提问于 2017-07-26 17:09:24
回答 2查看 789关注 0票数 0

我正在尝试在我的项目中使用spdlog。根据spdlog docu的说法,我只需要复制include文件夹下的文件并使用C++ 11编译器。

我将/include/spdlog文件夹复制到我的项目根文件夹中,但在尝试构建项目后出现了许多错误。一些是ff:

代码语言:javascript
复制
/home/project/Documents/project-server/spdlog/spdlog.h:46:39: error: variable or field ‘set_error_handler’ declared void
void set_error_handler(log_err_handler);
                                   ^
/home/project/Documents/project-server/spdlog/spdlog.h:46:24: error: ‘log_err_handler’ was not declared in this scope
 void set_error_handler(log_err_handler);
                    ^
In file included from /home/project/Documents/project-server/main.cpp:13:0:
/home/project/Documents/project-server/spdlog/spdlog.h:74:79: error: ‘filename_t’ does not name a type
 std::shared_ptr<logger> basic_logger_mt(const std::string& logger_name, const filename_t& filename, bool truncate = false);
                                                                           ^
/home/project/Documents/project-server/spdlog/spdlog.h:75:79: error: ‘filename_t’ does not name a type
 std::shared_ptr<logger> basic_logger_st(const std::string& logger_name, const filename_t& filename, bool truncate = false);
                                                                           ^
/home/project/Documents/project-server/spdlog/spdlog.h:80:82: error: ‘filename_t’ does not name a type
 std::shared_ptr<logger> rotating_logger_mt(const std::string& logger_name, const filename_t& filename, size_t max_file_size, size_t max_files);

我尝试在CMakeLists.txt中添加以下内容

代码语言:javascript
复制
target_include_directories(ProjectName INTERFACE spdlog)

include_directories(spdlog)

target_link_libraries(ProjectName .... -libspdlog-dev)

(我安装了libspdlog-dev)

代码语言:javascript
复制
add_subdirectory(spdlog)

但上述方法都不起作用。有人知道我怎么解决这个问题吗?非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2017-07-26 17:24:15

正如在spdlogs docu at the very bottom中所写的,您可以执行

代码语言:javascript
复制
find_package(spdlog CONFIG)

这为您提供了导入的接口库spdlog::spdlog,您可以使用它

代码语言:javascript
复制
target_link_library(my_library PUBLIC spdlog::spdlog)

(如spdlog/examples/CMakeLists.txt中所示)

票数 1
EN

Stack Overflow用户

发布于 2017-07-27 10:40:42

解决方案是安装spdlog:

代码语言:javascript
复制
sudo apt-get install libspdlog-dev

并包括使用:

代码语言:javascript
复制
#include <spglog/spdlog.h>

我最初只是将spdlog复制到我的项目根目录,并尝试使用:

代码语言:javascript
复制
#include "spdlog/spdlog.h"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45322370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档