undefined reference to `add(int, int)'

发布时间 2023-11-09 09:43:44作者: 飘杨......

一、概述

  使用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