我正在使用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文件编译成资源?
答案 0 :(得分:0)
我个人并不喜欢让IDE /编译器编译我的资源。我喜欢在预构建脚本中执行此操作。但那只是个人品味。
值得指出的是,IDE /编译器在编译项目时不会重新编译资源脚本。只有在进行构建或删除已编译的.res文件时,才会重新编译资源脚本。
这是我喜欢负责编译资源的原因之一。另一个是我选择使用的资源编译器,这在Embarcadero资源编译器不足的情况下很重要。
根据评论判断,您有一个我在上面描述的更复杂的场景。但是,基础知识保持不变。通过在资源文件和可执行模块之间建立一对一关联,您可以获得灵活性。这种灵活性允许您准确地链接您希望的模块,而不再是。