0

我在静态链接方面有点问题。我有一个静态库(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。我做错了什么?

4

1 回答 1

1

您没有链接 libstdc++ 或不使用 g++,简而言之,“gcc”驱动程序是 C 驱动程序,而不是 C++ 驱动程序,最终不会链接 C++ 运行时。如果需要,您可以在命令行中显式添加 -lstdc++,或者,绝对是一般的首选,只需使用 'g++'

于 2013-04-03T17:47:18.300 回答