NO matching function for call to "make_shared"
时间: 2023-12-07 11:04:04 浏览: 342
这个错误通常是由于你的代码中没有包含必要的头文件或库文件。请确保你已经正确地包含了 `spdlog` 库的头文件和链接了该库。
如果你使用的是 `CMake`,则需要在 `CMakeLists.txt` 文件中添加以下内容:
```cmake
find_package(spdlog REQUIRED)
target_link_libraries(YourProject PRIVATE spdlog::spdlog)
```
如果你手动编译 `spdlog` 库,则需要将其编译为静态库或动态库,并将其链接到你的项目中。
此外,还需要确认你的 `make_shared` 函数的参数是否正确。在你的代码中,第一个参数是一个字符串,代表日志的名称,第二个参数是一个字符串,代表日志文件的路径。如果你使用的是 `spdlog` 库的默认配置,那么这个字符串应该是 `"spdlog"`。
如果你依然无法解决这个问题,请提供更多的代码和错误信息,这样我才能更好地帮助你。
相关问题
包含了spdlog的库且调用没有问题,但是 auto myLogger1 = std::make_shared<spdlog::sinks::daily_file_sink>("spdlog", "logs/log.txt", 0, 0);这一行代码会报错NO matching function for call to "make_shared"
如果你确定已经正确包含了 `spdlog` 库的头文件和链接了该库,但是仍然出现了 "NO matching function for call to `make_shared`" 的错误,那么可能是因为你使用的 `spdlog` 版本不同导致的。
在不同版本的 `spdlog` 中,可能存在不同的构造函数重载或函数签名,如果你的代码中使用了不兼容的函数签名或构造函数重载,就会出现这个错误。
你可以检查一下你使用的 `spdlog` 版本是否与你的代码兼容,如果不兼容,可以尝试升级或降级 `spdlog` 版本,或者修改你的代码以适应新的 `spdlog` 版本。另外,还可以尝试使用其他可用的构造函数或函数签名来创建 `daily_file_sink` 对象。
如果你仍然无法解决这个问题,请提供更多的代码和错误信息,这样我才能更好地帮助你。
阅读全文