将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}
答案 0 :(得分:4)
删除任何迷路{$ R * .res}或{$ R * .lrs}指令。
2.2.x fpc / lazarus版本将* .res文件转换为.lrs文件,然后将其作为结构化常量包含在内。如果仅包含在实现点下方,就像在Delphi中一样,单独添加* .res会产生此失败。正确的* .lrs包含点位于初始化部分。
只有2.4.x(RC1已经出局)将在{$ R * .res}上拥有“真正的”资源支持。但这可能需要几个月才能完成(0.9.30)