我正在学习c ++而我正在尝试使用我在程序中从互联网上下载的库(来自https://mattmccutchen.net/bigint/)。 因为我希望一切都很整洁,所以我将所有.hh文件放在名为“BI”的子文件夹中。 但是当我尝试用g ++编译我的.cpp文件时(它是Windows XP SP3上的MinGW),编译器会输出以下错误:
J:\comp proj\FS>J:\Programmi\MinGW\bin\g++.exe "J:\comp proj\FS\test.cpp" -o "J:\comp proj\FS\test.exe" -I "J:\comp proj\FS\BI"
E:\DOCUME~1\MrJackV\IMPOST~1\Temp\ccidH1Z6.o:test.cpp:(.text+0x2c): undefined reference to
BigInteger::BigInteger(int)'
E:\DOCUME~1\MrJackV\IMPOST~1\Temp\ccidH1Z6.o:test.cpp:(.text+0x11b): undefined reference to
operator<<(std::ostream&, BigInteger const&)'
E:\DOCUME~1\MrJackV\IMPOST~1\Temp\ccidH1Z6.o:test.cpp:(.text$ZNK10BigIntegermlERKS[BigInteger::operator*(BigInteger const&) const]+0x29): undefined reference
to `BigInteger::multiply(BigInteger const&, BigInteger const&)'
collect2: ld returned 1 exit status
我尝试使用BigInteger::BigInteger(int)'
E:\DOCUME~1\MrJackV\IMPOST~1\Temp\ccidH1Z6.o:test.cpp:(.text+0x11b): undefined reference to
开关来解决问题,但没有成功。
此外,我已尝试在cpp中放置-I, -l and -L
,但这不起作用。
我有什么问题吗?
提前致谢。
答案 0 :(得分:3)
您需要同时使用-L和-l开关。 -L指向包含库二进制文件的目录,-l表示该二进制文件
e.g。 -L / home / ed / libs -lmath
答案 1 :(得分:0)
要记住两个关键字。 Undeclared
表示编译器从未听说过它。 Undefined
表示编译器已经听说过它,但不确切知道如何使用它。对于那些错误,您需要告诉它与BigInteger库链接,该库应该带有标题(A * .lib文件)我很确定gcc如何包含链接库(Ed Heal说-L和-l,I “那样做。”
答案 2 :(得分:0)
您的问题是您没有链接库代码。
阅读“自述文件”,然后按照其建议调整随附的Makefile。
答案 3 :(得分:0)
好的,所以经过一番乱搞我发现我需要做几件事