首页 > 解决方案 > 编译错误,未定义对Test()的引用,多文件C程序

问题描述

尝试编译一个 .c 程序来启动服务器会给我一个错误,即我在另一个 .c 程序上的未定义函数(即使我有一个 .h 链接它们)。

我正在做一个 C# 客户端项目,该客户端使用 C 脚本与服务器连接。我使用 zinjai 作为我的 IDE,我正在尝试将项目实现并拆分为 2 个主要文件,一个由服务器脚本组成,另一个由数据库 C 脚本组成。我已经创建了一个 .h 文件来链接它们,但我无法让它工作。

这只是项目的一部分,只是为了测试它是否有效,我返回 0 因为我想打印它以查看它是否有效。这是让我们说 ac 的一部分:

//include base de datos y mysql
#include <mysql.h>
#include "basedatos.h"

int Test(){
    return 0;
}

这是 .h 文件:

#ifndef BASEDATOS_H
#define BASEDATOS_H

int Test();

#endif

这是主要的 .c 文件,可以说是 bc:

#include <mysql.h>
#include "basedatos.h"
//obviously there's some code here:

    for( ; ; ){

        printf ("Escuchando\n");
        printf ("%d", Test());

        sock_conn = accept(sock_listen, NULL, NULL);

我希望看到程序编译并打印一个'0'但是当我尝试编译它时,会出现这个错误:

未定义的对 Test() 的引用

collect2:错误:ID 返回 1 退出状态

我再说一遍,我正在使用带有这个编译选项的 zinjai:-std=c99 mysql_config --cflags --libs -lm

标签: c

解决方案


我不熟悉 Zinjai,但是对于大多数 IDE,您需要创建一个项目才能将多个源文件编译并链接到您的可执行文件中。


推荐阅读