.RC 文件中的某些资源在生成的 .exe 中不可用,其 ID 在 .RC 文件中给出。我有一个 RC 文件,其中包含 id 为 10000、10100 等的资源字符串。由于某种原因,当我加载 id 为 10000 (LoadStr(10000)) 的资源时,它会加载另一个字符串('无效字段类型。'-在 midas.rc 中声明来自 VCL 并且具有相同的 id)。
我假设具有相同 id 的资源在构建过程中会导致“[Error] WARNING. Duplicate resource(s)”。但是没有与链接器相关的警告。
ps我使用的是Delphi 2010。
更新:
- 该问题的解决方法是将 id 从 10000 更改为其他值。10050,例如
问题:
- 为什么重复资源没有警告?
- 可以做些什么来防止将来出现这个问题?
我的项目.inc
const
offLanguages = 10000;
offCurrencies = 10100;
我的项目.RC 文件
LANGUAGE LANG_LATVIAN, SUBLANG_NEUTRAL
#include "myproject.inc"
STRINGTABLE
{
offLanguages+0, "LV"
}
.. etc...
rc 文件被编译为 myproject.res 文件。并且生成的 .res 文件具有 ID 为 10000 的正确字符串“LV”(我使用资源编辑器进行了检查)。
在 delphi coude 中,资源被加载到单元的初始化部分,使用 LoadStr 函数。
喜欢那个.pas:
unit likeThat;
interface
{$I *.inc}
{$R *.res}
// skipped
initialization
Assert(LoadStr( offLanguages )= 'LV'); // <== fails here