首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Boost Linker问题

Boost Linker问题
EN

Stack Overflow用户
提问于 2020-10-20 03:46:17
回答 2查看 74关注 0票数 0

我正在使用Boost库,我有一些链接问题。目前,我的代码输出如下:

未定义的建筑符号:"boost::program_options::to_internal(std::__1::basic_string const&)",引用自: std::__1::vector,std::__1::allocator boost::program_options::to_internal >(std::__1::vector,std::__1::allocator>> const&)在train_model_main.cc.o "boost::program_options::variables_map::variables_map()",中引用自:_main in train_model_main.cc.o (列表继续)

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

ld:在体系结构中找不到符号x86_64 clang: x86_64: linker命令在退出代码1中失败(使用-v查看调用)

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

代码语言:javascript
复制
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()

我相信我是正确地连接了图书馆,那么是什么导致了这个问题呢?

EN

回答 2

Stack Overflow用户

发布于 2020-10-20 05:08:37

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

不幸的是,“我认为我正确地链接了库”。您需要用Boost::program_options引用完整的目标名称,包括名称空间前缀。可以省略添加Boost_INCLUDE_DIRS,因为目标定义确实包含了这些信息。所以您的行看起来应该是:- Volker

代码语言:javascript
复制
if(Boost_FOUND)
    add_executable(main ./apps/something.cc)
    target_link_libraries(main PUBLIC Boost::program_options)
endif()
票数 0
EN

Stack Overflow用户

发布于 2021-09-07 22:13:30

不匹配的建筑是这里的问题。将正在构建的应用程序的编译与boost程序选项匹配。

How do you build the x64 Boost libraries on Windows?

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64438176

复制
相关文章

相似问题

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