我真的不是C / C ++ Linking魔术专家。 g ++和Cygwin都不是,而是新手。
想象一下,我有一个可执行文件(在我的例子中是Apache Server),它接受C库作为模块。 例如编译文件 libMyServer.so
如果我使用C ++编写guts编码,并导出仅使用vanilla函数,例如我将调用CExportToC的类的静态成员函数...如果我这样做将链接魔术制作我的库 libMyServer 可以从请求C库的程序中找到吗?
答案 0 :(得分:2)
你没有在链接时这样做,你声明编译器在生成代码时不会破坏名称(这当然不允许重载)。将要公开的事物的声明放到extern "C" { ... }
块中。参见例如FAQ。除非你愿意做很多工作并与PITA一起生活,否则这里的课程几乎没有运气。即便如此,单个编译器编写器也可以破坏您的代码(只会在运行时错误中显示,而不是在编译错误中显示)。