我在静态链接中遇到了一些问题。我有一个静态库(libkells.lib),它由包含函数声明的头文件和包含函数实现的.cpp文件组成。我成功地将这两个编译成.o文件,然后从中构建静态库。
然后我有一个文件mcmd.cpp,它调用.lib文件中的函数。我已将静态库中涉及的头文件包含到此mcmd.cpp文件中。这个文件(mcmd.cpp)成功编译成.o文件但是当我尝试将它构建成可执行文件时,我的编译器返回如下消息:
libkells.lib(libkells.o):在函数ZNKSt13move_iteratorIPSsE4baseEv中 。未定义的引用__cxa_end_catch,未定义的引用 __cxa_begin_catch
还有很多其他错误。当我敏锐地看到这些错误消息时,这些错误似乎来自一些名为include/c++/bits/stl_iterator.h
的头文件。我在Windows上使用mingw 4.7.1。我做得不对的是什么?
答案 0 :(得分:1)
您没有使用g ++链接libstdc ++,简而言之,作为C驱动程序而不是C ++驱动程序的'gcc'驱动程序最终不会链接C ++运行时。如果需要,可以显式地将-lstdc ++添加到命令行,或者,通常是第一选择,只需使用'g ++'