2013-04-03 292 views
0

我在静态链接有点问题。我有一个静态库(libkells.lib),它由包含函数声明的头文件和包含函数实现的.cpp文件组成。我成功地将这两个文件编译成了一个.o文件,然后用它们构建了静态库。问题与链接C/C++

然后我有在的.lib文件调用函数的文件mcmd.cpp。我已将包含在静态库中的头文件包含到此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

没有足够的信息,向我们展示了编译和链接代码,请在命令行中。 –

+0

所有的cpp文件?不需要'c'标签。 – crashmstr

+1

您使用的确切链接命令是什么? – NPE

回答

1

您还没有连接到libstdC++或不使用克++,在短的“GCC”的驱动程序,作为C驱动,而不是C++驱动,不会在端部连接的C++运行。如果你愿意,你可以明确地添加-lstdC++命令行,或者,绝对是第一选择在一般情况下,只需使用“G ++

+0

凉爽,所以我在命令行上使用G ++ –

+0

是欢迎您的花花公子(如参数)什么! g ++工作!所以我应该在C++上使用g ++和在c上使用gcc –