链接c / c ++的问题

时间:2013-04-03 17:17:07

标签: c++ c

我在静态链接中遇到了一些问题。我有一个静态库(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。我做得不对的是什么?

1 个答案:

答案 0 :(得分:1)

您没有使用g ++链接libstdc ++,简而言之,作为C驱动程序而不是C ++驱动程序的'gcc'驱动程序最终不会链接C ++运行时。如果需要,可以显式地将-lstdc ++添加到命令行,或者,通常是第一选择,只需使用'g ++'