链接C ++库,因为它可以作为C调用

时间:2011-02-09 16:51:40

标签: apache g++ cygwin

我真的不是C / C ++ Linking魔术专家。 g ++和Cygwin都不是,而是新手。

想象一下,我有一个可执行文件(在我的例子中是Apache Server),它接受C库作为模块。 例如编译文件 libMyServer.so

如果我使用C ++编写guts编码,并导出仅使用vanilla函数,例如我将调用CExportToC的类的静态成员函数...如果我这样做将链接魔术制作我的库 libMyServer 可以从请求C库的程序中找到吗?

1 个答案:

答案 0 :(得分:2)

你没有在链接时这样做,你声明编译器在生成代码时不会破坏名称(这当然不允许重载)。将要公开的事物的声明放到extern "C" { ... }块中。参见例如FAQ。除非你愿意做很多工作并与PITA一起生活,否则这里的课程几乎没有运气。即便如此,单个编译器编写器也可以破坏您的代码(只会在运行时错误中显示,而不是在编译错误中显示)。