将Delphi窗体转换为Lazarus时出现问题

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}
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)。


我没有{$R *.res},只有{$R *.lrs}(从{$R *.dfm}更改) - Michał Niklas
但是当我删除了{$R *.lrs}时,我的应用程序似乎可以编译和运行。太好了! - Michał Niklas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接