Ошибка ссылки «нерешенные внешние» с настраиваемым заголовком включает - PullRequest
1 голос
/ 03 мая 2019

До недавнего времени у меня не было реальной "потребности" в этом, но я пытаюсь выяснить, как работает разделение функций на несколько заголовков / файлов. Кажется, даже самая простая вещь не работает так, как я думал.

У меня есть следующий код:

main.c

#include <stdio.h>

#include "hdr.h"

int main(void)
{
  test();
  return 0;
}

hdr.h

int test(void);

hdr.c

int test(void)
{
  printf("Hello, world!\n");
}

Когда я пытаюсь скомпилировать это с Pelles C ( cc ), я получаю ошибку "unresolved external (s)":

main.c
polink.exe main.obj
POLINK: error: Unresolved external symbol '_test'.
POLINK: fatal error: 1 unresolved external(s).

Командная строка, которую я использую:

cc -x main.c

Почему это? Могу ли я что-то изменить в коде, чтобы не касаться командной строки? Или мне всегда нужно сначала создавать отдельные заголовки отдельно?

1 Ответ

2 голосов
/ 03 мая 2019

main.c

#include <stdio.h>

#include "hdr.h"

int main(void)
{
    test();
    return 0;
}

hdr.h

int test(void);

hdr.c

#include <stdio.h>    // add header file
int test(void)
{
  printf("Hello, world!\n");
  return 0;
}

скомпилировать с помощью команды:

cc main.c hdr.c

тогда вы найдете файл с именем: a.out, запустите его с помощью команды:

./a.out

или вам также может понравиться это:

cc -g -o main main.c hdr.c
./main
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...