QT下c和c++混编问题

这些天折腾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++编译,或者去掉该关键字

原文地址:https://www.cnblogs.com/legahero/p/QT_problem.html