【问题标题】:Make Failed on Undefined Reference to WinMain未定义对 WinMain 的引用失败
【发布时间】:2017-08-11 22:09:08
【问题描述】:

在使用 GNU Make (v3.82.90) 构建我的应用程序时,我不断收到此链接器错误。我已经查看了关于 SO 的其他答案,但我仍然无法找到答案。

gcc -o build obj/teos_init.o obj/teos_event.o obj/teos_task.o obj/teos_sem.o obj
/teos_linkedlist.o obj/teos_log.o  -Iinc/pvt  -Iinc/pub -fmax-errors=3 -std=c11
c:/libs/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../libmingw32.a(main.o):(.text.
startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
makefile:14: recipe for target 'build' failed
make: *** [build] Error 1

我的makefile是这样的……

INCDIR = inc/pvt inc/pub
SRCDIR = src
OBJDIR = obj
LIBDIR = lib

CC=gcc
CFLAGS := $(foreach d, $(INCDIR), -I$d) -fmax-errors=3 -std=c11

_SRC = teos_init.c teos_event.c teos_task.c teos_sem.c teos_linkedlist.c teos_log.c
_OBJ := $(subst $(SRCDIR),$(OBJDIR),$(_SRC:%.c=%.o))
OBJ := $(patsubst %,$(OBJDIR)/%,$(_OBJ))

build: $(OBJ)
    $(CC) -o $@ $^ $(CFLAGS)

$(OBJDIR)/%.o: $(SRCDIR)/%.c
    @mkdir -p $(OBJDIR)
    $(CC) -c -o $@ $< $(CFLAGS)

$(OBJ): $(DEPS)

.PHONY: clean
clean:
    -rm -r $(OBJDIR)/*

这是我的主要功能:

int main( int argc, char *argv[] )
{
   TEOS_ERROR err = TEOS_ERR_NO_ERROR;

   err = TEOS_TaskPoolInit();

   return err;
}

非常感谢任何建议。谢谢。

更新

这不是重复的。 正如我在发这篇文章时所指出的那样,“我已经查看了关于 SO 的其他答案,但我仍然无法找到答案。”我正在尝试使用标准 C 库构建控制台应用程序,不是 Windows 应用程序。

【问题讨论】:

  • main 函数在您构建的文件之一中?
  • 看看this answer
  • @Someprogrammerdude 是的。
  • @LPs 我看过,但没有帮助。
  • 您是否设法将一个简单的 hello world 程序与您的 MinGW 安装链接?

标签: c linker-errors gnu-make winmain


【解决方案1】:

鉴于在评论中,您声称:

main函数在main.c中

链接操作的输出(为清晰起见格式化)是

gcc -o build 
    obj/teos_init.o 
    obj/teos_event.o 
    obj/teos_task.o 
    obj/teos_sem.o 
    obj/teos_linkedlist.o 
    obj/teos_log.o  
    -Iinc/pvt  -Iinc/pub -fmax-errors=3 -std=c11

很明显,您的 Makefile 没有链接 main.o,因此您没有 main 函数。

原因是main.c 未列在您的源文件列表中

_SRC = teos_init.c teos_event.c teos_task.c teos_sem.c teos_linkedlist.c teos_log.c 
# No main.c here

将 main.c 添加到该行的末尾,看看是否可以解决任何问题。

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 2013-01-15
    相关资源
    最近更新 更多