具有自定义标头的链接错误“未解决的外部”包括

时间:2019-05-03 15:00:57

标签: c

直到最近我还没有任何真正的“需要”,但是我试图弄清楚如何将函数分为多个头文件/文件。甚至最简单的事情似乎也无法像我想的那样起作用。

我有以下代码:

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 )进行编译时,出现错误“未解析的外部”:

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

我使用的命令行是:

cc -x main.c

这是为什么?我可以更改代码中的某些内容以避免触摸命令行吗?还是我总是必须先单独构建自定义标头材料?

1 个答案:

答案 0 :(得分:2)

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