在用gcc编译的程序中调用用g ++编译的库的C / C ++函数

时间:2010-10-22 05:04:38

标签: gcc g++

我有一套用c ++开发的软件库模块。所以,我使用g ++来编译我的软件。

这必须由各种现有的应用程序使用,这些应用程序用C语言编写并用gcc编译。

当其他团队使用g ++编译代码时,由于c ++的严格类型检查规则,他们开始遇到很多编译器错误。这打破了他们的申请。更糟糕的是,他们使用的是第三方库代码,无法使用g ++进行编译。

如果他们使用gcc,则会出现链接器错误(未解析的符号)。

所以,我的问题是...... “我的库代码是否有办法与他们的应用程序链接,而无需更改相应的编译器?也就是说,我仍然需要使用g ++,因为我在代码中大量使用类/对象,他们没有选择使用g ++会打破他们的应用吗?“。

谢谢你的帮助。

的问候, 拉温德拉

1 个答案:

答案 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 { };
}