簡體   English   中英

未定義引用'WinMain @ 16'minGW32-make錯誤

[英]Undefined reference to `WinMain@16' minGW32-make error

我正在嘗試在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進行編譯。

為什么在鏈接時使用-o $(OBJS) 這應該是-o $(PROG) $(OBJS) 您正在嘗試覆蓋main.o文件而不是使用它...

編輯:此外,在沒有make的情況下構建時,您不會使用相同的命令,而在-lglfw3時使用-lglfw3時會使用-lglfw3_win32

編輯2(查看注釋):有時在鏈接時有必要在目標之后放置庫標志,這給出了:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM