2016-07-15 63 views
0

我正在使用Code :: Blocks,我想編譯和鏈接我的程序圖標與程序的其餘部分。圖標文件是名爲icon.png的PNG圖像,位於工作區中項目文件夾的Others文件夾中。我右鍵單擊它並在選項菜單中選中「編譯文件」和「鏈接文件」。如果這是一個有點不清楚,我做了一個屏幕快照,顯示了我所做的正是:如何編譯和鏈接代碼::塊中的圖像

screenshot

無論如何,問題是,編譯器給我,說:「沒有這樣的錯誤消息文件或目錄「。如果我檢查「編譯文件」而不是「鏈接文件」,編譯工作正常,但圖像未編譯。

我想知道如何編譯圖像文件而不會收到錯誤消息。

+1

圖像文件不應該被編譯...... C/C++編譯器只會編譯C和C++。不是PNG(或任何其他圖像) – Toby

+0

@Toby您的意思是說這是不可能的或者不推薦? (如果不推薦我不這樣做,我只想知道它是否可能) –

+0

我有同樣的問題 - 如何將一個可執行圖標添加到CodeBlocks中的C程序 - 我在這裏回答:https:/ /stackoverflow.com/q/49164595/2441026 – user136036

回答

4

讓我們澄清誤會第一::)

編譯是把你的源代碼到包含機器代碼的目標文件的行爲。 鏈接正在解決這些目標文件之間的依賴關係,並輸出可用的可執行文件/庫。

因此,編譯或鏈接圖像沒有意義。


當然有辦法得到一個圖像到你的程序:

  • 分發程序作爲歸檔和使用文件IO
  • 將圖像轉換成字節數組,並放置在一個C文件。 xxd -i命令就是這樣做的
  • 將其轉換爲目標文件並將其鏈接。查看this question的答案

事情是,你想要告訴文件管理器,有一個圖標和它在哪裏。文件管理器不會知道你的字節數組或額外的部分。

在Windows上,PE可執行文件可以包含預定義的.rsrc部分,其中可以指定要使用的圖標。你編寫一個resource file,然後由一個特殊的編譯器編譯成一個你可以鏈接的目標文件。這是一個answer關於使用MinGW做這件事。