簡體   English   中英

內聯編譯.rc文件

[英]Compiling .rc file inline

我正在使用Delphi XE4,並試圖實現32/64位兼容性,為此,我需要在資源上存儲2個DLL(一個32個,另一個64個),將其導出,如果可執行文件檢測到64位OS,它將使用64位DLL。 但是我只想在編譯32位版本的可執行文件時才包含此資源,所以我試圖獲得如下內容:

{$IFDEF WIN32}
{$R Resources.res Resources.rc}
{$ENDIF}

我不知道是否正確,因為無法測試,以下行:{$ R Resources.res Resources.rc}無法正常工作。

如果我刪除Resources.res文件,它將給我錯誤

[dcc32錯誤] E1026找不到文件:“ Resources.res”

如果我留下一個預編譯的.res文件,則在構建/編譯時它不會刷新,即使我更改了.rc文件(例如,刪除了一個DLL),該exe仍然具有相同的大小,因此我相信它沒有刷新.res文件...

我的.rc文件是:

X86RES RCDATA x86.dll
X64RES RCDATA x64.dll

僅在針對32位環境進行編譯時,如何獲取已編譯為資源的rc文件?

  • 創建兩個.rc文件。 一種用於32位DLL,另一種用於64位DLL。
  • 將兩個資源文件都編譯為.res文件。
  • 對於32位版本,僅鏈接包含32位DLL的.res文件。
  • 對於64位版本,鏈接兩個.res文件。

就個人而言,我並不是很喜歡讓IDE /編譯器來編譯我的資源。 我喜歡在預構建腳本中執行此操作。 但這大部分只是個人喜好。

值得指出的是,IDE /編譯器在編譯項目時不會重新編譯資源腳本。 僅當您進行構建或刪除已編譯的.res文件時,才會重新編譯資源腳本。

這就是我喜歡負責編譯資源的原因之一。 另一個我選擇使用的資源編譯器在Embarcadero資源編譯器不足的情況下可能很重要。


從評論來看,您有一個我上面描述的更復雜的方案。 但是,基本原理保持不變。 通過在資源文件和可執行模塊之間建立一對一的關聯,您可以獲得靈活性。 這種靈活性使您可以准確地鏈接所需的模塊,而無需鏈接更多。

暫無
暫無

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

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