【发布时间】:2015-09-15 14:20:04
【问题描述】:
我正在使用 Delphi XE4,并试图实现 32/64 位兼容性,为此我需要在资源上存储 2 个 DLL(一个 32 另一个 64),导出它们,如果可执行文件检测到 64 位操作系统,它将使用 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
如何获取这个 rc 文件,编译成资源,只有在编译为 32 位环境时?
【问题讨论】:
-
我相信您正在寻找
WIN32和WIN64。您还必须将脚本分开 - 一个用于 32,另一个用于 64。 -
你的意思是什么脚本?
-
我的意思是
.rc脚本文件应该是 2 个文件 - 然后使用WIN32和WIN64有条件地包含一个或另一个。 -
您是否要将 DLL 加载到提取它们的进程中?在这种情况下,您可以期待反恶意软件对您的行为采取模糊的看法。
-
不知道这是否重要,但 IIRC {$R xxx.res xxx.rc } 方案仅适用于项目文件(dpr 或 dpk)。
标签: delphi delphi-xe4