По какой-то причине программа дает мне эту ошибкунеопределенная ссылка на `функции»
undefined reference to createNetworkDriver
Сейчас моя структура папок:
mini-kernel/
kernel/
drivers/
network/
network.h
network.c
util/
errors/
errors.c
main.c
network.h:
#ifndef _network_h_
#define _network_h_
#pragma once
#include <stdbool.h>
#include<stdint.h>
typedef struct
{
char *name;
bool initalized;
int32_t status;
int (*initalize)(void);
}NetworkDriver;
NetworkDriver* createNetworkDriver(void);
NetworkDriver* destroyNetworkDriver(NetworkDriver *self);
#endif
network.c:
#include "network.h"
#include "../../../util/errors/errors.c"
extern void die(const char *message);
NetworkDriver* createNetworkDriver(void)
{
printf("Working");
NetworkDriver nd = malloc(sizeof(NetworkDriver));
}
NetworkDriver* destroyNetworkDriver(NetworkDriver *self)
{
if(self->initalized == true)
free(self);
else
die("NET_DRIVER FAILED TO DESTROY");
}
errors.c:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
void die(const char *message)
{
if(errno) {
perror(message);
} else {
printf("ERROR: %s\n", message);
}
exit(1);
}
И, наконец, моя main.c:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include "kernel/drivers/network/network.h"
int main(int argc, char *argv[])
{
NetworkDriver *nd = createNetworkDriver();
}
И по какой-то причине, когда я запустить main.c
файл gcc main.c -std=c99 -w -lm
, я получаю сообщение об ошибке: undefined reference to createNetworkDriver
.
Im в настоящее время программирует этот онлайн here.
Вы должны строить со всеми исходными файлами. –
В вашей сети.h #include не хватает места после включения и, вероятно, это почему он не включен и не скомпилирован? –
Извините @JoachimPileborg im a newb здесь. Что ты имеешь в виду? – amanuel2