這些天折騰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++編譯,或者去掉該關鍵字