c - 对函数的 undefined reference ,但已全部定义

标签 c function codeblocks linker-errors undefined-reference

创建库后运行多个文件时遇到问题,在本例中我将其称为“calcola.h”

这对我来说似乎没问题,但错误“未定义的错误somma,错误:ld返回1退出状态”不断出现。 “somma”是我在其中创建函数的文件名,该函数计算两个数字之间的总和。

此时,我尝试通过终端手动运行我的文件:首先,我通过输入 gcc -o main main.c somma.c 创建了 main.exe 文件,然后运行只需键入 main.exe 即可创建 main.exe 文件,并且它运行良好,因此我知道我的代码肯定是正确的。

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

最终,此代码对用户输入的两个数字进行求和。

听一下ma​​in.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;
}

最佳答案

我查看了您的问题。接下来的评论几乎总结了我的建议,即选择和使用与您正在编码的平台兼容的 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,而只是一个 IDE 如何帮助您更轻松地编码的直观示例。

关于c - 对函数的 undefined reference ,但已全部定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76843376/

相关文章:

function - 如何从事件处理程序获取返回数据?

linux - 编译 CodeBlocks 13.12 时出现的问题

C程序执行: Does it run in a process or a thread?

c - C 中的隐式转换

c - 使用单循环数组中两个元素之间的最大差异

c++ - 我正在寻找使用相同代码定义两个具有不同名称的库

c++ - 在做其他事情的同时用c++播放声音

c - C 中的无效输入

c - 错误 : unknown type name 'intptr_t'

javascript - 不可能在一个页面中使用两次 JavaScript