我对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文件夹中。
g++ main.cpp -L "C:\...\cpp-bencoding\build\src" -l libbencoding -o foo.exe -std=c++11但是,这会产生错误消息:
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我真的很想在这里提供一些帮助。
提前感谢!
发布于 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可以提供链接错误(未定义的引用)。
您可以找到这里的详细信息
https://stackoverflow.com/questions/29588355
复制相似问题