Boost链接器问题



我正在使用Boost库,并且我遇到了一些链接器问题。目前我的代码输出的是:

体系结构x86_64的未定义符号:"boost::program_options::to_internal(std::__1::basic_string<char,std::_1::char_traits,std:;__1::分配器>const&(",引用自:std::__1::vector<std::__1::basic_string<char,std::__1::char_traits,std::__1::分配器>,std::__1::分配器<std::__1::basic_string<char,std::__1::char_traits,std::__1::分配器>gt>boost::program_options::to_internal<std::__1::basic_string<char,std::__1::char_traits,std::__1::分配器>gt;train_model_main.cc.o中的(std::__1::vector<std::___1::basic_string<char,std::_1::char_traits,std:,__1::分配器>,std:;__1::basil_string&llt;char,std::__1:,char_trait,std:"boost::program_options::variables_map::variable _map((",引用自:_train_model_main.cc.o中的main(列表继续(

在底部,我的代码是这样写的:

ld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用(

我正在尝试使用Boost的program_options库,但链接步骤似乎失败了。以下是我在CMake文件中的链接方式:

find_package(Boost 1.73.0 COMPONENTS program_options REQUIRED)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
add_executable(main ./apps/something.cc)
target_link_libraries( main program_options)
endif()

我相信我正确地链接了库,那么是什么原因导致了这个问题呢?

我要复制并粘贴cmake话语中的答案:https://discourse.cmake.org/t/boost-linker-issues/2030

"我相信我正确地链接了图书馆"不幸的是没有。您需要使用Boost::program_options引用完整的目标名称,包括命名空间前缀。您可以省略添加Boost_INLUDE_DIRS,因为目标定义确实包含此信息。所以你的台词看起来像:"-Volker Enderlein

if(Boost_FOUND)
add_executable(main ./apps/something.cc)
target_link_libraries(main PUBLIC Boost::program_options)
endif()

这里的问题是架构不匹配。将您正在构建的应用程序的编译与增强程序选项相匹配

如何在Windows上构建x64 Boost库?

在您的情况下,地址需要设置为64或使用64位二进制

最新更新