在今天之前,我始终认为在链接阶段将对象和库传递给g ++的顺序并不重要.然后,今天,我尝试从c ++代码链接到c代码.我将所有C头文件包装在一个extern"C"块中,但链接器仍然很难找到我知道在C对象归档中的符号.
困惑,我创建了一个相对简单的例子来隔离链接错误,但令我惊讶的是,更简单的示例链接没有任何问题.
经过一些试验和错误后,我发现通过模拟简单示例中使用的链接模式,我可以得到主要代码链接OK.模式首先是对象代码,对象归档第二,例如:
g++ -o serverCpp serverCpp.o algoC.o libcrypto.a
任何人都可以解释为什么会这样吗?我在链接普通的c ++代码时从未见过这个问题.