/opt/spdlog/include/spdlog/fmt/bundled/core.h:1310: error: use of deleted function 'fmt::v9::detail::fallback_formatter<T, Char, Enable>::fallback_formatter() [with T = unsigned char [16]; Char = char; Enable = void]' 1310 | auto f = Formatter(); | ^~~~~~~~~~~
时间: 2024-04-26 20:20:49 浏览: 177
这个错误提示显示是调用了一个被删除的函数,即 `fallback_formatter`。这个函数在fmt库的 `v9` 版本中已经被删除了。
你可以考虑升级fmt库到最新版本,或者手动实现对该类型的格式化。如果你已经升级到最新的fmt版本,仍然遇到这个问题,那么你需要检查代码中是否有对该类型的格式化操作,并且确保你使用的fmt版本支持该类型的格式化。
相关问题
ubuntu16.04ros编译时报错home/bobac3/ros_workspace/src/multipoint_navigation/src/multipoint_nav.cpp:20:17: warning: non-static data member initializers only available with -std=c++11 or -std=gnu++11 int cycle = 1; //巡航次数 ^ /home/bobac3/ros_workspace/src/multipoint_navigation/src/multipoint_nav.cpp: In member function ‘void Multipoint_Nav::move()’: /home/bobac3/ros_workspace/src/multipoint_navigation/src/multipoint_nav.cpp:90:26: error: ‘goal’ does not name a type for(auto goal:pose) //遍历导航点列表 ^ In file included from /opt/ros/kinetic/include/ros/ros.h:40:0, from /opt/ros/kinetic/include/actionlib/client/simple_action_client.h:45, from /home/bobac3/ros_workspace/src/multipoint_navigation/src/multipoint_nav.cpp:1: /opt/ros/kinetic/include/ros/console.h:373:3: error: expected ‘;’ before ‘do’ do \ ^ /opt/ros/kinetic/include/ros/console.h:561:35: note: in expansion of macro ‘ROS_LOG_COND’ #define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__) ^ /opt/ros/kinetic/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’ #define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_ ^ /home/bobac3/ros_workspace/src/multipoint_navigation/src/multipoint_nav.cpp:152:17: note: in expansion of macro ‘ROS_INFO’ ROS_INFO("------------------loop ( %d ) termination!----------- ^ /opt/ros/kinetic/include/ros/console.h:373:3: error: expected primary-expression before ‘do’ do \ ^ /opt/ros/kinetic/include/ros/console.h:561:35: note: in expansion of macro ‘ROS_LOG_COND’ #define ROS_LOG(level, name, ...) ROS_LOG_COND(true, level, name, __VA_ARGS__) ^ /opt/ros/kinetic/include/rosconsole/macros_generated.h:110:23: note: in expansion of macro ‘ROS_LOG’ #define ROS_INFO(...) ROS_LOG(::ros::console::levels::Info, ROSCONSOLE_DEFAULT_
这个错误的原因是代码中使用了 C++11 的特性,但是编译时没有开启 C++11 标准。你需要在编译时加上选项 -std=c++11 或者 -std=gnu++11 来开启 C++11 标准。
具体来说,在你的 CMakeLists.txt 文件中添加以下行:
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
这将会把 C++11 标准的编译选项加入到编译命令中,从而解决这个问题。
另外,还有一个错误是 'goal' does not name a type,这可能是因为你没有在代码中定义 goal 变量的类型。你需要检查一下代码中是否有定义 goal 变量的类型,并且确保它在使用之前已经被定义。
/opt/rh/devtoolset-9/root/usr/libexec/gcc/x86_64-redhat-linux/9/ld: cannot find -lspdlog collect2: error: ld returned 1 exit status 为什么报错
该错误提示表明链接器(ld)无法找到名为 spdlog 的库文件。在您的编译命令中,使用了 `-lspdlog` 选项来指定链接 spdlog 库,但是链接器无法在默认的库路径中找到该库。
解决该问题的方法是确保 spdlog 库已经正确安装,并且链接器能够找到该库。您可以尝试以下几个步骤来解决问题:
1. 确保您已经正确安装了 spdlog 库。您可以通过在终端中运行以下命令来检查是否已经安装了 spdlog:
```shell
ls /home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/lib/libspdlog.a
```
如果该命令返回文件路径,则表示库已经安装。
2. 确保库路径正确。在您的编译命令中,使用了 `-L/home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/lib/` 选项来指定库路径。请确保该路径是正确的,并且包含了 spdlog 库文件。
3. 如果以上步骤都正确,但是仍然无法找到库,您可以尝试手动指定库的完整路径来链接。例如:
```shell
g++ -O2 --std=c++11 ../LoggerTest.cpp ../Logger.cpp -o test /home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/lib/libspdlog.a -pthread -I/home/xtrader/QuantFabric/XAPI/SPDLog/1.8.5/include
```
这样可以直接指定库的路径,绕过链接器无法找到库的问题。
请确保您已经按照上述步骤检查和调整您的编译命令,并确保 spdlog 库已经正确安装。如果问题仍然存在,请提供更多细节或者错误信息,以便我能够更好地帮助您解决问题。
阅读全文