Chinaunix

标题: 求助:linux 下 c c++ 混合编译问题 [打印本页]

作者: warterw    时间: 2006-04-10 15:15
标题: 求助:linux 下 c c++ 混合编译问题
有两个开源项目
一个用C语言写的
一个用C++写的
都在linux下运行
都有独立的Makefile,独立的可执行程序

现在我需要在C的项目里面调用C++项目里面的函数

怎么弄
比较着急的说
谢谢
作者: warterw    时间: 2006-04-10 17:29
自己顶。。。
作者: net_robber    时间: 2006-04-10 17:42
把C 按照C++编译,应该没有问题的吧???
作者: warterw    时间: 2006-04-11 14:25
现在的问题是:怎样在 c 项目的 Makefile中 引用 c++ 项目编译生成的静态链接库 .a 文件,如果能顺利引用的话那么应该就可以调用其函数了。
作者: letian0711    时间: 2006-04-12 21:27
标题: 回复 4楼 warterw 的帖子
按照c++编译就是了,
如果用的gcc编译器的话,在makefile中把gcc改成g++就是了,
但问题是以前用gcc编译器编译的代码,现在改用g++就不一定能通过了.
作者: soul_of_moon    时间: 2006-04-13 08:43
C++是C的超集,C++可以引用C的,加个extern "C"{},而只要涉及类,C就不能引用C++
作者: net_robber    时间: 2006-04-13 08:44
哦,我一直都是用的G++,所以你说的问题没有遇到过,呵呵,不过可以提供一个解决思路
用g++编译C的代码,但是需要修改一下
在所有C的代码外面加上

extern "C"
{
//C代码
}
作者: warterw    时间: 2006-04-13 15:47
好几百个文件哪,函数数都数不清
我的做法是:
将c++编译一个为静态库,搞到/lib/目录下
在c中调用c++的地方都标明  extern ...
然后make之
编译通过,但是生成 .so的地方,总说 undefined reference to ×××(c++函数名)
作者: wujianchong    时间: 2006-04-24 16:58
分别编译,链接的时候用g++.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2