未定义的引用`WinMain @ 16'minGW32-make错误

时间:2016-04-07 11:57:49

标签: c++ makefile mingw glfw

我正在尝试在Windows上编译GLFW示例代码。如果我输入命令:

g++ main.cpp -Ideps/include/ -Ldeps/lib/ -lglfw3 -lopengl32 -lgdi32

直接进入命令提示符然后它编译完全正常。但是我想要使用makefile,当我这样做时,我得到以下输出。

g++ -g -Wall -Ideps/include/ -c main.cpp
g++ -Ldeps/lib/ -lglfw3_win32 -lopengl32 -lgdi32 -o main.o
c:/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_WIN32:8: recipe for target 'test.exe' failed
mingw32-make: *** [test.exe] Error 1

我正在使用的makefile是

PROG = test.exe
CC = g++
CPPFLAGS = -g -Wall -Ideps/include/
LDFLAGS = -Ldeps/lib/ -lglfw3_win32 -lopengl32 -lgdi32
OBJS = main.o

$(PROG) : $(OBJS)
    $(CC) $(LDFLAGS) -o $(OBJS)

main.o :
    $(CC) $(CPPFLAGS) -c main.cpp

我正在使用命令

调用它
mingw32-make -f Makefile_WIN32

我对makefile很新,所以我不知道问题是什么,所以任何帮助都会非常感激。我唯一的猜测是它不是源代码,因为它使用g++命令编译好,而且在我的mac上(因此使用非标准的makefile名称)使用类似的makefile。

1 个答案:

答案 0 :(得分:0)

链接时为何-o $(OBJS)?这应该是-o $(PROG) $(OBJS)。您正试图覆盖您的main.o文件而不是使用它...

编辑:此外,在没有make的情况下构建时,您没有使用相同的命令,而在使用-lglfw3的makefile中使用-lglfw3_win32

编辑2(查看评论):有时在链接时将库标志放在目标之后是必要的,这给出了:

$(CC)-o $(OBJS) $(LDFLAGS)