首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用C++11编译Bzip2

用C++11编译Bzip2
EN

Stack Overflow用户
提问于 2015-03-30 04:42:53
回答 2查看 631关注 0票数 1

我正在尝试用C++11编译MultiBoost Library,但是我不能让它工作。问题似乎出在内部使用的BZip2库上。更具体地说,有一个名为Bzip2Wrapper的包装器,它为C库提供c++接口。C库的所有文件都包含在同一个文件夹中。当使用默认的make文件时,一切正常,但当我更改

代码语言:javascript
复制
project(multiboost)

代码语言:javascript
复制
project(multiboost CXX)

我得到以下错误:

代码语言:javascript
复制
libMultiBoostLib.a(Serialization.cpp.o): In function     `Bzip2WrapperReader::open(char const*)':
Serialization.cpp:(.text._ZN18Bzip2WrapperReader4openEPKc[_ZN18Bzip2WrapperReader4openEPKc]+0x97): undefined reference to `BZ2_bzReadOpen'
Serialization.cpp:(.text._ZN18Bzip2WrapperReader4openEPKc[_ZN18Bzip2WrapperReader4openEPKc]+0xc5): undefined reference to `BZ2_bzReadClose'
libMultiBoostLib.a(Serialization.cpp.o): In function `Bzip2WrapperReader::close()': ...

CMakeList文件如下所示

代码语言:javascript
复制
# Bzip2
file(GLOB bzip2_SRCS "${BASEPATH}/Bzip2/*.cpp" "${BASEPATH}/Bzip2/*.c" "${BASEPATH}/Bzip2/*.h")
add_library(Bzip2Lib STATIC ${bzip2_SRCS})
#add_library(bzip2 SHARED ${bzip2_lib_SRCS})
...    
# adding library to the exec
target_link_libraries(multiboost MultiBoostLib Bzip2Lib)

你知道会出什么问题吗?我甚至不知道问题出在哪里。谢谢!

EN

回答 2

Stack Overflow用户

发布于 2015-03-30 17:18:30

这看起来不像是C++11错误,而是构建系统中的错误。

我没有看过代码,但是您从输出中添加了如下内容

target_link_libraries(MultiBoostLib PUBLIC Bzip2Lib)

应该在libBzip2Lib上添加libMultiBoostLib中缺少的依赖项。

票数 0
EN

Stack Overflow用户

发布于 2015-03-30 18:24:24

我找到问题了。我将"CXX“添加到我的项目描述中,这将禁止使用C。因此,无法编译这些库(用C编写)。将其更改为"project(name C CXX)“解决了此问题。然后我还需要包含行"set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")“来启用C++11支持。现在一切都正常了。

非常感谢!

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

https://stackoverflow.com/questions/29334607

复制
相关文章

相似问题

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