当前位置:  技术问答>linux和unix

关于.cpp和.c的混合编程

    来源: 互联网  发布时间:2016-10-14

    本文导语:      C++写的是几个类(JRTP),C中主要是open()、read()、send()等函数。     我的想法是,用g++编译cpp,用gcc编译c,然后将编译出来的.o文件用gcc连接,结果出错了,用g++连接.o文件还是有错。     貌似可以把.c全部...

    C++写的是几个类(JRTP),C中主要是open()、read()、send()等函数。
    我的想法是,用g++编译cpp,用gcc编译c,然后将编译出来的.o文件用gcc连接,结果出错了,用g++连接.o文件还是有错。

    貌似可以把.c全部写成.cpp然后用g++编译,但是不知道会不会带来意想不到的问题。
    那么解决这个问题有些什么方法呢?

|
C++的头文件用

#ifdef __cplusplus

extern "C" 
{

#endif

// your C++ header here

#ifdef __cplusplus
}
#endif

|
函数名字修饰问题。C++的修饰和C是不一样的。你可以自己试一试,用objdump或者nm命令查看一些就知道了。所以如果你在C++中不用extern C的话,C的编译单元就找不到那个函数名字了。

|
c++里的c代码用extern c,就不会有问题

|
该回复于2010-12-03 10:30:54被版主删除

|
extern c

|


怀疑链接时命令有问题,,别直接用gcc命令链接,,用ld命令链接试试。

|
extern "C"
就可以了。

|
编译后变量和函数的符号表 C的格式还是CPP的格式

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请问:对于目标文件的编译中,有a.h, b.h, c.h, a.cpp, b.cpp, c.cpp中,a.h中include 了b.h, c.h
  • vim生成的.cpp~是什么文件?我使用vim编辑的时候出现了好多.cpp~文件
  • 编译一个hello.cpp文件后 ,再list ,怎么会多了个hello.cpp~文件?
  • 请问如何在linux下一个工程里面使用多个cpp文件
  • linux如何查找多个目录下的cpp文件
  • g++ -o file *.cpp
  • Ruby中文分词器 rmmseg-cpp
  • 请问emacs中怎样用make来编译.cpp文件?
  • Java到C++的转换工具 J2cpp
  • _ts.cpp文件
  • 求一个命令或脚本,删除多个多级文件夹下指定格式(*.cpp)外的其他文件
  • UML模型插件 Cpp2Uml
  • 如何在所有的.py .txt .cpp文件 中grep “abc”和“123”两个字符串?
  • 自动生成makefile的问题, C文件成功,但CPP文件失败,请指点.谢谢.
  • ActiveMQ-CPP
  • acl 扩展库 acl_cpp
  • C/C++源码工具 cpp2html
  • JsonRpc-Cpp
  • PROC开发时 //注释编译不通过 如何设置使用cpp编译。
  • 源代码有.c和.cpp,链接时出错


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3