2010-12-22 377 views
4

我試圖用GCC通過DevC++(MinGW GCC)編譯一些C++ WIN32代碼。它接縫,它沒有鏈接的對象,它沒有給我一個明確的錯誤信息:「[PathToSource]」錯誤1「。用GCC編譯WIN32代碼

用Eclipse(MinGW GCC)嘗試了同樣的事情並編譯​​。但是,並非所有資源都顯示爲我將圖標設置爲應用程序的圖標,因此它將從資源文件中加載。我在運行應用程序時還會在後臺獲取控制檯窗口。

這是什麼原因?如何使用代碼編譯資源文件並避免在後臺加載控制檯窗口。

我還想知道是否有一種方法可以在Linux中通過GCC編譯WIN32代碼,或者使用相同的編譯器將其移植到Linux中。

+2

控制檯是因爲可執行文件的子系統設置爲CLI,而不是GDI。嘗試鏈接器開關`--subsystem`。 – ruslik 2010-12-22 03:26:30

+0

除了ruslik評論簽出:http://www.cygwin.com/ml/cygwin/2009-03/msg01028.html – 2010-12-22 03:36:17

回答

1

資源文件在Eclipse:

生成步驟項目,有需要輸入命令和完整路徑資源及其輸出文件。

windres ../Resources/resource_file.rc -o ../Debug/resource_file.o 

在連接選項項目工具設置,需要爲要添加的資源被鏈接到可執行文件的路徑爲資源輸出文件。

../Debug/resource_file.o 

避免控制檯窗口:

一個鏈接器標誌需要僅供GUI來指定。

-mwindows 

在Eclipse

連接標誌項目工具設置輸入標誌。

2

我曾嘗試通過DEVC++(MinGW的 GCC)編譯一些C++ WIN32 代碼與GCC。它接縫,它沒有鏈接 的對象,它沒有給我一個 清除錯誤消息:「[PathToSource]> 錯誤1」。

您是否包含了Windows SDK的路徑?在我的電腦是:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib\x64

(注意:我已經安裝在電腦上的視覺工作室)

編譯您提供相應的gcc library setting的節目。

用Eclipse (MinGW GCC)嘗試了同樣的事情並編譯​​。但是, 並非所有資源都顯示爲I 的圖標設置爲應用程序的 圖標,因此它將從資源文件中加載 。我還會在後臺獲得一個 控制檯窗口,因爲我在 上運行該應用程序。

檢查資源設置以查看Eclipse引用Windows庫的位置。

這是什麼情況?我如何 使用 代碼編譯資源文件,並避免在後臺加載控制檯窗口 。

在Visual Studio中開發您的應用程序。如果你買不起Visual Studio,並且你是愛好程序,請考慮Visual Studios Express

我也想知道,如果有一種方法 通過 GCC編譯Linux中WIN32代碼,還是有辦法將其移植爲同 編譯器。

如果你的意思是WINAPI,那麼不會,據我所知。如果你想兼容,你應該堅持使用標準的C++庫。

有,但是,你可能會發現有用的萬有文庫:

  1. http://sourceware.org/pthreads-win32/
  2. http://stdcxx.apache.org/#platforms
  3. http://www.gtk.org/download-windows.html
  4. Cross Platform Lbiraries (Stackoverflow)
+0

感謝您的第一個技巧,我沒有這樣做。 – 2010-12-22 03:19:52

4

嘗試在命令提示符下編譯和看什麼發生。

爲您的資源文件在命令提示符下嘗試此操作。

windres resource_file.rc -o resource_file.o,最終建立自己的代碼,g++ resource_file.o -o app.exe app.cpp