undefined reference to `add(int, int)'

一、概述

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

 

  

posted on 2023-11-08 11:14  飘杨......  阅读(65)  评论(0编辑  收藏  举报