在今天之前,我始终认为在链接阶段,对象和库传递给g ++的顺序并不重要。然后,今天,我试图从C++代码链接到c代码。我把所有的C头文件都封装在一个extern“C”块中,但是链接器仍然很难找到我知道的C对象存档中的符号。将c代码链接到C++代码时,g ++链接顺序依赖关系
困惑,我创建了一个相对简单的例子来隔离链接错误,但让我吃惊的是,更简单的例子没有任何问题。
经过一些试验和错误,我发现通过模拟简单例子中使用的链接模式,我可以得到主代码链接OK。这种模式是目标代码首先,对象档案第二例如:
g++ -o serverCpp serverCpp.o algoC.o libcrypto.a
任何人都可以阐明为什么这可能是这样一些轻?链接普通C++代码时,我从来没有见过这个问题。
有关详细信息,请参阅:http://stackoverflow.com/questions/1095298/gcc-c-linker-errors-undefined-reference -to-vtable-for-xxx-undefined -referen/1095321#1095321 – 2010-07-29 17:23:39