3

在将 Delphi Windows 服务应用程序移植到 FPC Linux 控制台应用程序后,我尝试使用 GUI 移植程序。我在我的 Windows 机器上安装了最新的 Lazarus 并转换了简单的“hello world”应用程序。一个单元有表格(Delphi 中的.dfm 文件)。Lazarus 将此表格转换为 .lfm 和 .lrs 文件。但是编译这个有问题:

windres: C:/htlib/pas/FInfo.lrs:1: syntax error
Free Pascal Compiler version 2.2.4 [2009/10/25] for i386
Copyright (c) 1993-2008 by Florian Klaempfl
Target OS: Win32 for i386
Compiling lazarus_test.lpr
...
Compiling C:\htlib\pas\FInfo.pas
Compiling resource C:\htlib\pas\FInfo.lrs
d:\lazarus\fpc\2.2.4\bin\i386-win32\windres.exe: C:/htlib/pas/FInfo.lrs:1: syntax error
C:\htlib\pas\FInfo.pas(366,1) Error: Error while linking
C:\htlib\pas\FInfo.pas(366,1) Fatal: There were 1 errors compiling module, stopping

FInfo.lrs 文件的第一行看起来像文本文件(不是 .res 文件的二进制文件):

{ This is an automatically generated lazarus resource file }

LazarusResources.Add('TfrmInfo','FORMDATA',[
  'TPF0'#8'TfrmInfo'#7 ...

在设计器中,我可以看到并编辑此表单,因此我认为它已成功转换。也许 .lrs 文件有问题?它不应该是二进制的 .res 文件吗?我应该怎么做才能编译这个表格?

编辑

我的 .pas 单元具有以下形式:

{$R *.lrs}
4

1 回答 1

4

删除任何杂散的 {$R *.res} 或 {$R *.lrs} 指令。

2.2.x fpc/lazarus 版本将 *.res 文件转换为 .lrs 文件,然后将其作为结构化常量包含在内。如果仅在实现点下方添加 *.res 会产生此失败,例如在 Delphi 中。正确的 *.lrs 包含点位于初始化部分。

只有 2.4.x(RC1 已出)将具有基于 {$R *.res} 的“真正”资源支持。但这可能需要几个月的时间才能通过(0.9.30)

于 2009-11-16T13:16:04.313 回答