c - 编译错误,未定义对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
解决方案
我不熟悉 Zinjai,但是对于大多数 IDE,您需要创建一个项目才能将多个源文件编译并链接到您的可执行文件中。
推荐阅读
- ios - 调用放置在数组中的函数
- python - 沿二维数组(numpy.,tensorflow)中的第一个维度的每个元素的索引数组
- python - 在python中修改子数组的值
- css - Flexbox,按列包装项目
- python - 如何使用 Python / Django 捕获 DOM 点击?
- c++ - 编译器在传递默认模板类型参数时选择模板特化
- android - Admob 广告在调试时加载,但不会在生产中加载
- reactjs - React/Redux:GET axios 调用导致无限循环,onSubmit 方法不会导致对用户的视觉输出
- android - 如何在 Firebase Android 的 24 小时内每次更新一个值
- batch-file - 试图用 BAT 脚本杀死带有标题的 CMD