免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4593 | 回复: 10
打印 上一主题 下一主题

关于编译器cc、cxx和gcc所编译的程序的互相调用问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-30 09:04 |只看该作者 |倒序浏览
我们在平时做工程的时候,经常会遇到这样的问题,我们的系统是用cc开发的,而与我们接口的厂家是用cxx开发的,还有可能是用gcc开发的,而通常我们经常要互相给对方写接口程序来实现多套系统之间的通信,而我们给对方提供的只能是我们当前用的编译器编写的程序,别的厂家怎么调用就是需要各个编译器之间进行协调。
   以下是不同编译器互相调用的需要注意的问题,由不对的地方还请各位版主给以纠正。

论坛徽章:
0
2 [报告]
发表于 2003-05-30 09:14 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

首先需要指出的是我们在写makefile文件的时候,是可以写成即有.cxx文件,还可以有.c文件的makefile,只不过是对.cxx编译用cxx编译器,.c文件用cxx编译,他们编译的.o是可以连接成一个应用程序的。但是,对用cxx编译的接口和用cc编译的接口之间的互相调用问题,只能用cxx调用cc的接口,而不能用cc调用cxx编译的接口。

论坛徽章:
0
3 [报告]
发表于 2003-05-30 09:19 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

关于在用cxx调用cc接口的注意问题:当你在cxx中要调用cc库中的接口时,你需要在cxx文件中要引用cc接口头文件时需要加入extern "C"{包含的头文件},然后用cxx编译器进行编译则可以,实际上在其他的开发工具上进行如此的操作也是这样进行,例如:在vc6上调用cc的接口.

论坛徽章:
0
4 [报告]
发表于 2003-05-30 09:23 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

关于cc\cxx和gcc之间调用的问题稍微复杂一点,用cc\cxx调用gcc时和gcc调用cc\cxx时稍微有点不同。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
5 [报告]
发表于 2003-05-30 09:23 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

建议:
如果应用处于不同的编译环境时,代码最好于ANSI C完全兼容。
对于编译选项而言,可以通过Makefile或autoconf等工具来控制。

论坛徽章:
0
6 [报告]
发表于 2003-05-30 09:31 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

我们的系统需要和别的厂家进行接口操作,别的厂家用的是gcc编译器,而我们用的是cxx和cc,所以在现场安装调试中我遇到了gcc和cxx接口之间互相引用的问题,通过makefile来协调没有完成,所以只有通过以上所述得以完成,因为在现场中情况可能不同,所以有什么好的方法还请版主给以帮助!谢谢!

论坛徽章:
0
7 [报告]
发表于 2003-05-30 09:35 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

如果你用的是gcc编译的接口,你用nm xx.so可以察看一下你所定义的接口和你用cxx\cc编译的xx.so的接口的区别,这就是为什么这两者之间互相调用回出现问题的原因。

论坛徽章:
0
8 [报告]
发表于 2003-05-30 09:39 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

希望大家讨论一下这个问题!这在现实应用中会碰到很多的。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
9 [报告]
发表于 2003-05-30 10:17 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

事实上,首先需要考虑的是机器的位数。例如32和64环境可能对应用带来灾难性的后果。对于系统提供的库接口(例如,filesystem,IPC,套接口等)目前国内的大多数系统都是基于bsd unix的或者system v的。因此,对于代码来说,能够实现这两者系统的兼容将是一件愉快的事情。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2003-05-30 10:18 |只看该作者

关于编译器cc、cxx和gcc所编译的程序的互相调用问题!

这一点,与你所说的用nm没有什么直接的关系。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP