我有一套用c ++开发的软件库模块。所以,我使用g ++来编译我的软件。
这必须由各种现有的应用程序使用,这些应用程序用C语言编写并用gcc编译。
当其他团队使用g ++编译代码时,由于c ++的严格类型检查规则,他们开始遇到很多编译器错误。这打破了他们的申请。更糟糕的是,他们使用的是第三方库代码,无法使用g ++进行编译。
如果他们使用gcc,则会出现链接器错误(未解析的符号)。
所以,我的问题是...... “我的库代码是否有办法与他们的应用程序链接,而无需更改相应的编译器?也就是说,我仍然需要使用g ++,因为我在代码中大量使用类/对象,他们没有选择使用g ++会打破他们的应用吗?“。
谢谢你的帮助。
的问候, 拉温德拉
答案 0 :(得分:0)
您可能遇到的一个问题可能是不同版本的g ++具有不同的ABI格式。至少,不要指望4.1之前的G ++版本能够使用4.1或更高版本编译的代码。
Intermingling C和C ++要求C ++代码都导出C兼容接口。这是通过使用extern "C"
说明符声明自由函数(不能在类上使用)来完成的。 (some notes on the c++ faq lite_
extern "C" {
#include "c_language_headers.h"
int c_accessible_function(int);
struct c_accessible_datatype { };
}