這是我對你做了什麼簡介:
- 您正在開發一個包裝項目。
- 您已使用資源和圖像對話框從項目菜單中向項目添加了一些文件。
- 您已將行
{$R Project.dres}
添加到包中包含的其中一個單元。
編譯器然後在鏈接時報告已經要求鏈接該文件的多個副本Project.dres
。編譯器不會執行此操作並丟棄其中一個編譯的資源文件。
理解這一點的關鍵可以在你的包的主文件,.dpk文件中找到。它看起來是這樣的:
package Package1;
{$R *.res}
{$R *.dres}
....
當您使用的IDE對話框中的IDE存儲在項目文件中的信息,.dproj文件資源和圖像,並且還增加了{$R *.dres}
到主項目源文件。這就是上面可以看到的那條線。 $R
指令中的*
指示編譯器使用與出現$R
指令的文件相同的基本名稱。
所以這就是你最終得到多個引用到同一個.dres文件。編譯器將.dpk文件中的{$R *.dres}
擴展爲Project.dres
並將其鏈接。
最自然的解決方案是從.pas
源單元中刪除它出現的{$R Project.dres}
。
但是,將源文件放入源文件的原因可能是您在其他項目中使用了源文件,並且希望它獨立運行。源文件包含加載資源的代碼,確保每當項目包含此源文件時,它都包含資源。一個$R
指令將做到這一點。但這與使用IDE的資源和圖像對話框不兼容。該IDE機制依賴於將信息保存到.dproj文件,並且是一個以項目爲中心的機制。
所以,你想要的源文件的.pas這裏包括$R
指令是做什麼:
- 取下資源和圖像對話框中的所有項目。
- 確保在任何源文件中都沒有對
.dres
文件的引用,包括.dpk和.dpr文件。
- 創建一個.rc資源腳本文件,列出您希望包含的資源。
- 要求編譯器編譯資源腳本,並通過包括這個指令在.PAS源文件鏈接它:
{$R images.res images.rc}
顯然我剛剛發明了一個文件名存在,但毫無疑問你會撿東西適當。
我已經找到了迴應的起點。在.dpk中我有「* .res」和「* .dres」。如果我刪除它,我不會收到警告。但是,在項目中,當我使用具有資源的組件時,我收到此消息「找不到資源」 – Joc02 2014-10-21 15:00:03