C++调用C的函数,出现 undefined reference to 的解决办法

假设我写了一个aaaa.h , aaaa.c  来实现一组函数功能

#ifndef AAAA_H
#define AAAA_H

#include<stdio.h>

void  fun();

#endif
#inlcude "aaaa.h"


void  fun()
{

   printf("test  fun !");

}

这个时候,有个bbb.cpp来调用 fun函数

#include "aaaa.h"


int  main()

{

   //调用C语言函数
   fun();
      
 
   return  0;

}

不好意思,你会遇见如下报错

undefined reference to fun

正确的解决方法,需要在C语言 添加  extern “C”:

#ifndef AAAA_H
#define AAAA_H


#ifdef __cplusplus
extern "C" {
#endif


#include<stdio.h>

void  fun();


#ifdef __cplusplus
}
#endif/* End of the 'extern "C"' block */



#endif

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: "undefined reference to" 是一个编译错误,通常是由于缺少库文件或函数定义引起的。解决方法包括: 1. 确保库文件已经正确安装并且在编译时已经链接到程序中。 2. 检查函数定义是否正确,包括函数名、参数和返回类型等。 3. 如果使用了第三方库,确保已经正确包含头文件并链接库文件。 4. 如果使用了多个源文件,确保所有源文件都已经正确编译并链接到程序中。 5. 如果使用了模板或者宏定义,确保它们已经正确展开并且没有语法错误。 6. 如果使用了静态变量或者全局变量,确保它们已经正确定义并且没有重复定义。 总之,解决 "undefined reference to" 错误需要仔细检查代码和编译选项,找出问题所在并进行修复。 ### 回答2: undefined reference to(未定义的引用)是C++程序编译时最常见的错误之一。这种错误通常会出现在缺少头文件或者库文件的情况下。 解决undefined reference to错误的方法主要有以下几种: 1.头文件或者库文件没有包含。在编写程序代码时,使用到的函数、变量等需要在程序中被声明,否则编译器将会无法识别这些内容。因此,在写代码时,需要引入相应的头文件或者库文件。 2.库不匹配。当使用库文件时,需要检查库文件是否与系统环境相匹配。在Linux系统中,不同的库有不同的命名规则,因此需要确认库文件是否命名正确,是否放在正确的位置。 3.函数定义不完整。当出现未定义的引用时,可能是函数定义不完整导致的。检查代码中函数实现的完整性,确保没有遗漏任何必要元素。 4.变量调用不正确。当调用某个变量时,需要确认变量是否已经被正确的定义。如果没有被定义,就会出现undefined reference to错误。 总之,当出现undefined reference to错误时,尽管看起来比较恼人,但通常只需要检查上述几种错误原因,并对代码进行相应的修正,就能够充分解决问题。 ### 回答3: 当你编译程序时,可能会遇到“未定义引用”的错误,这通常是由于缺少某些库或文件的定义或链接问题引起的。最常见的解决方法是确保你包含了正确的库文件和头文件,以及正确地链接这些文件。以下是一些可能有用的解决方法: 1. 确保源代码文件中包含了你需要使用的所有头文件和库文件,并在编译命令中正确地链接这些文件。 2. 确保库文件被正确地安装和配置。如果你自己编译库文件,要确保编译和安装过程正确无误。 3. 检查你的编译器是否支持你需要使用的库文件。有时候,你的编译器版本或操作系统版本可能不支持某些库文件。 4. 检查是否有任何拼写错误或其他语法错误,并在需要的地方进行更正。 5. 如果你使用的是C++程序,则可能需要加上“extern C”语句来解决链接问题。这个语句可以将C++函数的名称转换为C函数的名称,以允许C++函数可以与C函数互相调用。 6. 最后,如果你不知道如何解决这个问题,可以在网络上搜寻相关的解决方案。许多社区和论坛都有关于处理“未定义引用”的问题的讨论,你可以从中找到有用的解决方案。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员黄老师

如果你觉得帮助了你,支持一下!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值