【问题标题】:Lazarus resource - Using a resource leads to an error in linkingLazarus 资源 - 使用资源会导致链接错误
【发布时间】:2014-09-25 09:28:47
【问题描述】:

我四处寻找,但没有找到任何解决方案,所以我在这里尝试:

我想集成我的程序使用的图像(我以前用delphi做过这种方式)并在运行时加载它们。

我的想法是 1.) 使用

创建资源文件
lazres <resourcename> <imagename>

2.) 在源代码中包含资源文件

{$R <resourcename>}

3.) 编译 结果:

Unable to find file "Debug: Trying to open file /medi/media/work/src.hg/ylazlib/test/test.src/libtest6.lpr".

上面的文件名是项目源,应该可以找到。 我发现这个错误几乎总是由无效的资源文件引起的。 但该消息应该以更好的方式解释问题。

如果我重命名资源文件(因此链接器无法找到它),我会收到一条“正确”的错误消息。在这种情况下,需要资源的单元被打开,并且消息指出资源文件无法打开。

那么我在这里做错了什么? (我还尝试将不同格式的图像插入资源 - 所以图像本身可能不是问题) 任何帮助 - 提前致谢 注意:操作系统:debian sid [fpc 2.6.4] Lazarus SVN

【问题讨论】:

    标签: resources embedded-resource lazarus


    【解决方案1】:

    要遵循的过程与 Delphi 中的过程有些不同。作为explained here,你必须

    • LResources 添加到uses 子句中。
    • 在初始化部分包含 Lazres 生成的 res 文件。
    • 使用{$I myRes} 而不是{$R myRes}

    快速测试

    控制台 lzares cmd:

    C:\Users\me\Desktop\temp>lazres res.res project1.lpr=blah
    

    源代码: 单位 Unit1;

    {$mode objfpc}{$H+}
    
    interface
    
    uses
      Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,LResources;
    
    type
      TForm1 = class(TForm)
      private
        { private declarations }
      public
        { public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    {$R *.lfm}
    
    initialization
    {$I res.res}
    
    end.
    

    编译并运行良好。稍后,如果它们是原始数据,加载 res 可能会有点棘手,但对于图片来说,它非常简单,参见上一个链接中的示例。

    【讨论】:

    • LResources 已经添加到单元以及项目中......好吧,我发现有一些东西困扰着我:我发布了 lazres 我没有指定资源名称的扩展名 为目标文件名指定扩展名时,您会得到完全不同的结果。感谢您的帮助 - 我想我现在明白了。
    猜你喜欢
    • 1970-01-01
    • 2018-10-24
    • 2019-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多