【发布时间】:2016-04-07 11:57:49
【问题描述】:
我正在尝试在 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。
【问题讨论】:
-
你需要定义一个
WinMain函数 -
使用 -c 来阻止 g++ 尝试运行链接器。