一、概述
使用cmake编译C++项目报
undefined reference to `add(int, int)'
项目中有.cpp文件,有.h文件,有.c文件。也就是c和c++混编。其中.cpp文件引用了.c的头文件
现象:
从上面可以看出其实这几个.cpp和.c文件都已经编译过了。但是就会提示找不到.c文件中的方法
二、解决办法
原因在于.c和.cpp文件混编的时候需要在.h文件中加入一个判断,如果是c++环境则需要加上extern "C"。如下:
#ifndef _HEAD_H #define _HEAD_H #ifdef __cplusplus extern "C"{ #endif //加法 int add(int a,int b); //减法 int subtract(int a,int b); //乘法 int multiply(int a,int b); //除法 double divide(int a,int b); #ifdef __cplusplus } #endif #endif
标签:文件,undefined,reference,int,add,cpp From: https://www.cnblogs.com/tony-yang-flutter/p/17816970.html