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

问题描述 投票:0回答:1

我在创建库后运行多个文件时遇到问题,在本例中我称之为

"calcola.h"

对我来说似乎没问题,但是错误

"undefined error somma, error: ld returned 1 exit status"
不断出现。 “somma”是我创建函数的文件名,该函数对两个数字求和。

此时,我尝试通过终端手动运行我的文件:首先,我通过输入

gcc -o main main.c somma.c
创建了 main.exe 文件,然后只需输入
main.exe
运行了 main.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 function codeblocks linker-errors undefined-reference
1个回答
0
投票

我查看了您的问题。接下来的评论几乎总结了我的建议,即选择和使用与您正在编码的平台兼容的 IDE。为了让这些评论的内容更清楚一些,下面是一些图像,显示了使用头文件和上面使用“Code::Blocks”记下的两个源代码文件构建项目。与其他开发平台(例如“Visual Studio”等)一样,该开发平台通常提供一种方法来在项目中添加各种头文件和源文件并将其关联在一起,同时允许关联任何自定义库,以便开发人员应用程序将执行所需的编译和链接以生成最终应用程序代码。

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

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

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

测试代码会在终端窗口中产生以下输出。

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

可以肯定的是,这并不是提倡一种 IDE 优于另一种 IDE,而只是一个直观的示例,说明 IDE 如何帮助您更轻松地进行编码。

问候

© www.soinside.com 2019 - 2024. All rights reserved.