2013-10-30 316 views
0

我目前需要爲Windows編譯GTK +應用程序。我生成文件看起來是這樣的:MinGW gtk undefined reference

CC=g++ 
CFLAGS=-c -m32 -O0 -Wall -Wextra -Werror `pkg-config.exe --cflags --libs gtk+-2.0` 
LDFLAGS=-m32 `pkg-config.exe --cflags --libs gtk+-2.0` 
SOURCES=$(wildcard src/*.cpp) 
OBJECTS=$(SOURCES:.cpp=.o) 
EXECUTABLE=screenplay 

all: $(SOURCES) $(EXECUTABLE) 

$(EXECUTABLE): $(OBJECTS) 
     $(CC) $(LDFLAGS) $(OBJECTS) -o [email protected] 

.cpp.o: 
     $(CC) $(CFLAGS) $< -o [email protected] 

凡PKG-的Config.exe應該給我正確的-I和-L參數(例如路徑,其中包括文件和庫文件的位置)。並不奇怪,它實際上給了他們 - 輸出:

-mms-bitfields -IC:/MinGW/include/gtk-2.0 -IC:/MinGW/lib/gtk-2.0/include -IC:/MinGW/include/atk-1.0 -IC:/MinGW/include/cairo -IC:/MinGW/include/gdk-pixbuf-2.0 -IC:/MinGW/include/pango-1.0 -IC:/MinGW/include/glib-2.0 -IC:/MinGW/lib/glib-2.0/include -IC:/MinGW/include -IC:/MinGW/include/freetype2 -IC:/MinGW/include/libpng14 -LC:/MinGW/lib -lgtk-win32-2.0 -lgdk-win32-2.0 -latk-1.0 -lgio-2.0 -lpangowin32-1.0 -lgdi32 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lpango-1.0 -lcairo -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lintl 

我可以證實,庫存在於位置(C:/ MinGW的/ lib目錄/),但我收到未定義引用錯誤。有任何想法嗎?

+0

你自己寫了一個'Makefile'是否有很好的理由? CMake是不是照片? – thokra

+0

粘貼生成的編譯命令行和實際發生的錯誤可能會有助於解決問題。 –

+0

經典的'make'調用 - 編譯成功,鏈接就是問題。基本上我所說的是: g ++ -m32'pkg-config.exe --cflags --libs gtk + -2.0' ALL_OBJECTS -o EXECUTABLE_NAMEz 我收到未定義的參考gtk_main(和其他幾個),就像我甚至不會鏈接鏈接步驟中的庫。 – ZarakiKenpachi

回答

0

你檢查過gtk庫的實際安裝位​​置嗎?你似乎只有-LC:/MinGW/lib你圖書館的路徑,你確定所有的圖書館都在那裏?順便說一下,我認爲你只需要通過--cflags到pkg-config來設置CFLAGS--libs來設置LDFLAGS你不需要兩個。