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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
2013-11-08 android java.lang.ExceptionInInitializerError