我曾嘗試在Visual Studio中配置GTK +,但不能正常工作配置GTK, 任何人都可以建議我用一個適當的解決方案,如何在Visual Studio 2010中如何在Visual Studio 2010中
回答
我得到了GTK +與VS2010的合作,所以如果你想讓它工作,準備好一些樂趣,因爲這需要幾分鐘的時間。
首先,下載最新的Windows All-In-One bundle。可選的直接下載鏈接,用於我使用的GTK 2.24軟件包here。直接鏈接到32位版本。我還沒有測試64位版本,因爲它仍然列爲實驗。
一旦你的包下載,解壓縮到類似C:\gtk
或者對於我來說D:\gtk
下一步,我們將創建一個系統環境變量的GTK文件夾。打開一個命令提示符,然後寫:setx GTKDIR {Path to your GTK folder} /m
這在我的情況下,將setx GTKDIR D:\gtk /m
我們也將添加在Windows上運行到我們的系統PATH需要GTK +構建的應用程序的.dll文件。爲了讓事情變得非常簡單,我建議你用PathEditor編輯你的系統路徑。現在將路徑添加到GDK二進制文件夾,在我的情況下是D:\ gtk \ bin到系統PATH。通過在命令提示符中鍵入PATH,確認GTK bin文件夾已添加到PATH中。
現在我們轉到Visual Studio 2010並創建一個新項目。
File
->New
->Project
Visual C++
->Win32
->Win32 Console Application
然後出現應用嚮導。
單擊選擇:
Windows Application
Empty Project
單擊Finish繼續。
在我們添加任何的源文件,就在Solution Explorer中點擊項目名稱,然後單擊屬性。現在去配置屬性然後VC++目錄。我們現在需要將包含和庫文件從GTK添加到包含目錄和庫目錄。
你應該有以下的包含目錄
$(GTKDIR)\lib\gtk-2.0\include
$(GTKDIR)\lib\glib-2.0\include
$(GTKDIR)\include
和庫目錄:
$(GTKDIR)\lib
雖然我們仍然在項目屬性的看法,點擊鏈接器然後系統。在右側找到子系統,然後單擊下拉框。選擇Windows /子系統:WINDOWS
接下來,我們必須爲編譯器和鏈接器生成標誌。幸運的是,GTK +附帶了一個名爲pkg-config的漂亮小工具,我們將使用它自動爲我們生成這些標誌。 pkg-config工具可以在GTK的bin文件夾中找到。在我的情況下,使用我們之前定義的系統變量,這是D:\ gtk \ bin或%GTKDIR%\ bin。只需導航到bin文件夾使用命令提示符(創建的文本文件時會輸出有),並運行以下命令:
pkg-config --cflags gtk+-2.0 --msvc-syntax > compilerflags.txt
這將創建一個我們需要的編譯器標誌,並將它們存儲在文本文件中。 我對編譯器標誌結果(我已刪除了標誌-mms-位域,這是一個只有GCC標誌,我們並不需要):
-ID:/gtk/include/gtk-2.0 -ID:/gtk/lib/gtk-2.0/include -ID:/gtk/include/atk-1.0 -ID:/gtk/include/cairo -ID:/gtk/include/gdk-pixbuf-2.0 -ID:/gtk/include/pango-1.0 -ID:/gtk/include/glib-2.0 -ID:/gtk/lib/glib-2.0/include -ID:/gtk/include -ID:/gtk/include/freetype2 -ID:/gtk/include/libpng14
我們會做鏈接的標誌一樣的:
pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt
我的連接標誌結果:
/libpath:D:/gtk/lib gtk-win32-2.0.lib gdk-win32-2.0.lib atk-1.0.lib gio-2.0.lib pangowin32-1.0.lib gdi32.lib pangocairo-1.0.lib gdk_pixbuf-2.0.lib pango-1.0.lib cairo.lib gobject-2.0.lib gmodule-2.0.lib gthread-2.0.lib glib-2.0.lib intl.lib
隨着生成的所有需要的標誌,我們需要將它們添加到我們的項目。再次右鍵點擊項目名稱並點擊屬性。現在轉到C/C++
並點擊Command Line
。在右側,您應該看到一個名爲的附加選項。將compilerflags.txt內容複製並粘貼到此框中。
完成上述操作後,點擊鏈接器然後命令行。再次,將linkerflags.txt文件的內容複製並粘貼到附加選項框中。當我們在這裏時,添加最後一個鏈接標誌/ENTRY:mainCRTStartup此標誌告訴Visual Studio我們想要使用標準main()而不是Microsoft的_tmain()作爲我們的主程序入口點。
最後,在源文件夾中創建並添加一個新的.cpp文件有以下幾點:
#include <gtk-2.0\gtk\gtk.h>
int main(int argc, char* argv[])
{
gtk_init(&argc, &argv);
GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_set_usize(window, 300, 200);
g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_title(GTK_WINDOW(window), "GTK+ with VS2010");
gtk_widget_show(window);
gtk_main();
return 0;
}
現在一切都應該準備編譯,鏈接和運行。如果一切順利,你應該迎接以下幾點:
那麼這很有趣吧? :)
安裝GTK看看這個GTK+ with Visual Studio 2008 tutorial。
無效鏈接。 PLZ粘貼鏈接彙總 – markiv 2014-04-10 20:21:49
請再次測試,鏈接仍然適用。順便說一句,一個教程的總結幾乎沒用。 – liberforce 2014-04-14 08:48:13
來自Stack Overflow的提示寫出很好的答案'爲鏈接提供上下文 .......總是引用重要鏈接中最相關的部分,以防目標站點無法訪問或永久脫機。' – markiv 2014-04-22 14:32:16
如果您正在使用像this這樣的指南的幫助在Windows上構建GTK +堆棧,那麼使用預編譯二進制文件的奢侈品將不會被您使用。
在這種情況下,我會建議採用以下方法。
下載預編譯的二進制 - 這有兩個好處。
- 此附帶的pkg-config.exe實用程序可用於編譯的源代碼。
- 這還包含pkgconfig文件夾,其中包含豐富的.pc文件,可以對編譯後的源進行調整。分別安排有系統的頭文件,庫和DLL/exe文件包括lib和bin文件夾 -
編譯包在調試/釋放模式 - 嗯,這是你自己編譯它的主要優點。
從precompiled_gtk_source \ bin添加到compiler_gtk_source \ bin和設置PKG_CONFIG_PATH變量 的路徑compiler_gtk_source \ BIN \ pkgconfig添加到它的pkgconfig文件夾複製。
現在,考慮到編譯gtk時生成的庫的名稱以及預編譯包中相應的庫名稱可能有所不同,您可能需要在compiler_gtk_source \ bin \ pkgconfig * .pc中進行必要的更改文件。我會在這裏採取從頭到腳的方法(我們將很快看到優勢)。從上到下,我只需 即表示最終產品將成爲首先編輯的產品。
例如,在這種情況下,gtk +是最終產品,我將首先配置 配置此軟件包的.pc。程序如下:
- 首先看看創建的dll的名稱。在我的情況下,它是gtk-3.0。如果隨預編譯的二進制文件一起提供的.pc文件有另一個名稱,則適當更改名稱 - 在我的情況下,它是gtk-3.0.pc。 (這應該是所有其他.pc文件的情況。)
- 在文本編輯器中打開gtk-3.0.pc,您將看到如下所示的內容。
GTK的3.0.pc文件:
prefix=c:/gtk_compilation/vs12/win32
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
targets=win32
Name: GTK+
Description: GTK+ Graphical UI Library
Version: 3.18.2
Requires: gdk-3.0 atk-1.0 cairo cairo-gobject gdk_pixbuf-2.0 gio-2.0
Requires.private: atk
Libs: -L${libdir} -lgtk-3
Cflags: -I${includedir}/gtk-3.0 -mms-bitfields
上面的一個是我的自定義文件。如果您不知道每條線路的功能,請致電 ,您可以查看pkg-config help。然而,需求選項 需要特別提及。這是放置依賴dll的地方 - 再次確保dll的名稱與012文件夾中的內容完全匹配。
我們需要遞歸改變.PC文件後要求語句所包含的動態鏈接庫,如果任何的.pcs丟失或如果有一個名不匹配,你可以做出適當的改變。到目前爲止,您應該已經理解了從頭到腳的優勢。它可以幫助我們系統地整理依賴.pc文件,直到我們將它們全部整理出來。 現在,運行下面的命令,看看事情是否正常。
最後像下面運行的pkg-config命令:
pkg-config --cflags gtk-3.0 --msvc-syntax > compilerflags.txt
pkg-config --libs gtk+-2.0 --msvc-syntax > linkerflags.txt
我只是重定向結果到名爲compilerflags.txt & linkerflags.txt,這樣的文本文件,你可以用它們要通過切任何時候,複製粘貼&。當然,你應該只保留編譯器特定的標誌。
希望這有助於別人,有時。
- 1. 如何在visual studio 2010 professional中打開visual studio 2010 express項目?
- 2. 如何在Visual Studio 2010
- 3. 在Visual Studio 2010中
- 4. 在Visual Studio 2010中安裝Visual Studio 2013
- 5. 在Visual Studio 2010
- 6. 在Visual Studio 2010
- 7. 在Visual Studio 2010
- 8. 在Visual Studio 2010
- 9. 在Visual Studio 2010
- 10. 在Visual Studio 2010
- 11. 如何在Win32項目,Visual Studio 2010中
- 12. 如何在Visual Studio 2010中使用MATLAB
- 13. 如何啓用在Visual Studio 2010中
- 14. 如何在visual studio 2010中工作openAl
- 15. 如何在Visual Studio 2010中使用GStreamer?
- 16. 如何在Visual Studio 2010中創建Sequencediagram
- 17. 如何在Visual Studio 2010中設置宏?
- 18. 如何在Visual Studio 2010中打開.rptproj?
- 19. 如何在Visual Studio 2010中安裝Crypto ++?
- 20. 如何在visual studio 2010中編譯C?
- 21. 如何在Visual Studio 2010中支持includelevel
- 22. 如何在Visual Studio 2010中打開IntelliSense?
- 23. VSTO如何在Visual Studio 2010中工作?
- 24. 如何在Visual Studio 2010中禁用AnkhSVN?
- 25. 如何在Visual Studio 2008中使用Visual Studio 2010 C++工具?
- 26. 如何在Visual Studio 2010中添加「Visual Studio」引用WIX?
- 27. 如何在Visual Studio 2010中打開Visual Studio 11項目
- 28. 如何從Visual Studio 2010
- 29. 如何從Visual Studio 2010
- 30. Visual Studio 2010 - 如何優化
doesn不爲我工作。鏈接:致命錯誤LNK1123:在轉換爲COFF期間失敗:文件無效或損壞。在今晚第五次失敗後,我正在考慮在我的大腦中投入一顆子彈。 >:?( – MysteryDev 2013-07-23 02:52:44
可能與您的問題http://stackoverflow.com/q/10888391/2373040 – ManuelH 2013-07-24 16:57:31
感謝偉大的答案這對我幫助很大,我是能夠編譯GTK代碼但是,編譯EXE沒。由於無法找到dll,我不想啓動,我只是用gtk/bin將dll複製到了exe文件所在的文件夾中,並且它對我很有用,雖然這當然不是最好的解決方案,再次感謝。 – Ievgen 2013-10-21 20:48:46