首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接静态库错误的g++

链接静态库错误的g++
EN

Stack Overflow用户
提问于 2015-04-12 10:22:39
回答 1查看 851关注 0票数 1

我对C++还比较陌生,我大多习惯于在Visual 2013环境中工作。我需要在我正在做的一个项目中使用这个库:https://github.com/s3rvac/cpp-bencoding

我的第一个问题是:如果我在Visual或GCC (MinGW-w64)中构建库,重要吗?

无论如何,我使用GCC (4.9.2)构建了它,因为作者在GitHub上的说明中这样做了。我没有错误,我创建了一个名为libbencoding.a的库

现在,我想将这个库文件链接到我自己的项目。如果我被卡住了。所以我创建了一个简单的hello world程序(main.cpp)。libbencoding.a位于C:...\cpp-bencoding\build\src文件夹中。

代码语言:javascript
复制
g++ main.cpp -L "C:\...\cpp-bencoding\build\src" -l libbencoding -o foo.exe -std=c++11

但是,这会产生错误消息:

代码语言:javascript
复制
C:/Program Files (x86)/mingw-w64/i686-4.9.2-posix-dwarf-rt_v4-rev2/mingw32/bin/../lib/gcc/i686-w64-mingw32/4.9.2/../../../../i686-w64-mingw32/bin/ld.exe: cannot
 find -llibbencoding
collect2.exe: error: ld returned 1 exit status

我真的很想在这里提供一些帮助。

提前感谢!

EN

回答 1

Stack Overflow用户

发布于 2015-04-12 11:31:42

如果使用Visual 2013编译和链接项目,则项目可能在MinGW中出现编译和链接错误,因为它们实现了不同的C++标准集,或者使用了非标准语言功能。

正如allan.simon提到的,在用Visual编译的程序中不能使用.a库,反之亦然,因为缺乏标准的ABI (只有使用C编译器才有可能)。

项目cpp-bencoding使用CMake,因此您可以尝试使用Visual编译它。

还有一件事,当您使用MinGW时,库的顺序很重要。可以使用Visual使用选项-lmylib1 -lmylib2 -lmylib3编译项目,但MinGW可以提供链接错误(未定义的引用)。

您可以找到这里的详细信息

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

https://stackoverflow.com/questions/29588355

复制
相关文章

相似问题

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