对函数的未定义引用,但都已定义

Undefined reference to function, but it's all defined

提问人:Andrea Sestito 提问时间:8/6/2023 最后编辑:Eric PostpischilAndrea Sestito 更新时间:8/18/2023 访问量:108

问:

创建库后运行多个文件时遇到问题,在这种情况下,我调用了 ."calcola.h"

对我来说似乎没问题,但错误不断出现。“somma”是我创建函数的文件的名称,该函数在两个数字之间求和。"undefined error somma, error: ld returned 1 exit status"

此时,我尝试通过终端手动运行我的文件:首先,我通过键入创建了 main.exe 文件,然后我通过简单地键入 运行了 main.exe 文件,它运行良好,所以我知道我的代码肯定是正确的。gcc -o main main.c somma.cmain.exe

我已经通过终端检查了编译器是否正确安装,并且我已经将其添加到PATH中的环境变量中。 有什么东西可以解决这个问题吗?我已经处理好几天了,但什么都没有。有人可以帮我吗?

在一天结束时,此代码执行用户输入的两个数字之间的总和。

听听的 main.c

#include <stdio.h>
#include "calcola.h"
    
int main() {
    float num1, num2, x;
    scanf("%f%f", &num1, &num2);
    x = somma(num1, num2);
    
    printf("%f\n", x);
    getchar();
}

下面是标题 calcola.h

float somma(float, float);

下面是函数 somma.c

#include <stdio.h>
#include "calcola.h"

float somma(float a, float b) {
    return a + b;
}
C 函数 代码块 链接器错误 未定义引用

评论

0赞 chux - Reinstate Monica 8/6/2023
最好将相关代码作为文本发布在这里,而不是作为指向其他地方图片的链接。
0赞 Andrea Sestito 8/6/2023
你的意思是直接将代码写成文本吗?
0赞 chux - Reinstate Monica 8/6/2023
是的。复制和粘贴效果很好。
0赞 Andrea Sestito 8/6/2023
感谢您的评论,我很感激!我只是新来的,所以谢谢。
1赞 John Bollinger 8/6/2023
头文件不是库。某些标头是库的附属项,但标头与创建和/或链接到库以及从多个源构建库是正交的。#include

答:

2赞 NoDakker 8/8/2023 #1

我查看了您的问题。随后的评论几乎总结了我还要建议的内容,即选择和使用与您正在编码的平台配合使用的 IDE。为了让这些评论的内容更清楚一些,下面是几张图片,显示了使用头文件和您在上面提到的两个源代码文件使用“Code::Blocks”构建项目。

与其他开发平台(例如“Visual Studio”等)一样,该开发平台通常提供一种方法,用于在项目中添加和关联各种标头和源文件,并允许关联任何自定义库,以便开发人员应用程序随后执行所需的编译和链接以生成最终应用程序代码。

以代码为例,下面是向项目添加补充头文件和/或补充源代码文件的示例选择。

Addition of a file to a project

生成项目的文件目录结构。

Structure of files

一旦项目所需的所有文件都关联起来,就可以通过编译和链接来构建所需的程序文件。

测试代码后,终端窗口中会出现以下输出。

craig@Vera:~/C_Programs/Console/Cola/bin/Release$ ./Cola 
2.333 4.555
6.888000

可以肯定的是,这并不是对一个 IDE 的倡导,而只是一个直观的例子,说明 IDE 如何有助于简化编码。