关于Link时函数未找到(未定义)的问题

问题描述

用cube生成了一个STM32F4的工程,移植了一个tcp客户端的.c和.h文件,报错如下

解决过程

先尝试用"Go to definition"跳转,结果无法跳转,检查头文件也已包含

确认是否包含"dns.h"文件路径,确实已包含

进入"dns.h"与"dns.c"确认该函数是否存在,的确存在(源码怎么可能不存在),调用也没问题,的确是本工程目录下的"dns.h"

但是发现不是本工程的成员。

嗯?为什么文件的确在这个工程目录下但不是本工程的成员呢?不解,于是手动添加"dns.h"文件到工程,虽然下面那句“不是本工程的成员”不见了,但是还是报一样的错误。

怀疑工程问题,于是重新生成,无果……

怀疑移植的文件有问题,自己新建.c.h文件,然后复制原文件代码,没用……

怀疑重复包含头文件,并不是……

小小的眼睛,大大的疑惑

wdnmd一下午过去了

为什么明明和STM32H7的工程一样到STM32F4就不行了呢?

为什么明明include了却不能编译呢?

没编译?嗯?是不是有宏定义没开?

………………

………………

………………

真就没开呗

原来用cube生成工程的时候LwIP的DNS默认是关掉的……

所以"dns.c"和"dns.h"文件根本没有被编译自然就找不到这个函数了

总结

一般找不到函数多半是没有include那个头文件,或者头文件互相引用导致,我这边的原因比较智障,从中吸取了不少经验教训,明明include了声明该函数的头文件,却没找到,极有可能是因为该文件没有编译,没有编译的原因如果不是该文件不在同一个工程目录下或者未被包含入该工程,那么肯定是这个头文件里有什么宏定义没有被打开,其实头文件互相引用也属于这种情况。

以上。。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示是说,没有定义一个与输入参数类型为 'double' 相对应的函数 'link'。可能是函数名拼写错误或者函数没有被正确定义。需要检查代码中是否有这个函数的定义,并且确认函数名和参数类型是否正确。 ### 回答2: 在编程过程中,经常会遇到未定义函数的错误提示。在这种情况下,我们需要仔细检查代码并确定函数是否已正确定义。如果未定义函数与 'double' 类型的输入参数相对应,则错误提示可能是由于以下原因之一导致的: 1. 函数定义缺失:这是最常见的问题之一。如果输入参数为 'double' 类型,但函数未定义,则编译器将显示未定义函数的错误提示。此,我们需要添加函数定义并解决此问题。 2. 函数声明缺失:如果在调用函数之前未声明该函数,则编译器将无法识别该函数,因此会抛出未定义函数的错误提示。在这种情况下,我们需要在调用函数之前声明该函数。 3. 参数类型不匹配:如果定义的函数参数与调用该函数传递的参数类型不匹配,则编译器将抛出未定义函数的错误提示。因此,在调用函数之前,我们需要确保定义的参数类型与调用函数传递的参数类型匹配。 4. 头文件引用问题:如果函数定义在一个头文件中,并且程序没有正确引用该头文件,则编译器将无法函数定义,从而抛出未定义函数的错误提示。在这种情况下,我们需要确保程序正确引用了包含函数定义的头文件。 总之,在遇到未定义函数与 'double' 类型的输入参数相对应的错误提示,我们需要检查代码中是否满足以上条件,然后逐一解决问题,确保函数正确定义和使用。 ### 回答3: 在程序设计中,函数是一种封装了特定算法的代码模块,可以接收输入参数并输出结果。函数的输入参数需要与其定义的参数列表相匹配,否则程序将无法识别该函数。 在这道题中,程序出现了未定义与 'double' 类型的输入参数相对应的函数 'link' 的错误。这个错误提示告诉我们,程序使用了一个名为'link'的函数,但该函数没有一个与'double'类型的参数相匹配的版本。 要解决这个问题,我们需要检查程序中所有函数调用的参数类型,并和函数定义的参数列表进行比较,看是否存在不匹配的情况。如果发现了不匹配的情况,需要对代码进行修改,使其符合函数参数定义。 另一种可能的情况是,程序确实需要一个与'double'类型的参数相对应的'link'函数,但是该函数还没有被定义。在这种情况下,我们需要编写一个新的函数,接受一个'double'类型的参数,并按照程序的需求进行处理。然后在程序中调用该函数,以解决错误提示。 总之,在解决程序中出现“未定义与 'double' 类型的输入参数相对应的函数”的问题,我们需要仔细检查代码,并确保函数定义和函数调用之间的参数匹配性。如果有必要,我们需要编写新的函数来满足程序的需求,并在调用指定相应的参数类型。通过这样的方式,我们可以避免这种错误,并保证代码运行的正确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值