程序人生

C++与C#,java,php,安卓开发,行业软件,软件测试
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

QT下c和c++混编问题

Posted on 2017-07-06 09:22  谢*勇  阅读(9225)  评论(0编辑  收藏  举报

这些天折腾QT,在整合各种代码的时候,老司机也碰到不少问题,为了方便后查,初步总结如下:
1.新版QT中一般使用g++编译cpp文件和c文件,可以在项目中同时使用c文件和cpp文件。
后缀cpp文件g++自动识别为c++代码自动进行c++编译,后缀c文件自动识别为c代码进行c编译。这个时候必须注意在c文件中不要使用c++内容和c++的头文件

2.调用.c文件中的函数出现undefined reference to `xxxxx()'。
这是C/C++兼容问题,在C的头文件的相关函数声明添加extern "C"即可解决,例如
  #ifdef __cplusplus
  extern "C" {
  #endif
extern int test(int, int);
#ifdef __cplusplus
}
#endif

3.出现error: memory: No such file or directory #include <memory>
这是.c文件中引用c++标准的原因,可将文件后缀修改为.cpp,使用C++编译

4.出现unknown type name ‘namespace’
这是c编译c++的问题, c中没有namespace关键子,可将文件后缀修改为.cpp,使用C++编译,或者去掉该关键字