【问题标题】:Delphi XE2 Firemonkey sample app not running on a MACDelphi XE2 Firemonkey 示例应用程序未在 MAC 上运行
【发布时间】:2011-11-08 10:28:45
【问题描述】:

我正在尝试在 Mac 上运行示例 Firemonkey 应用程序,但我在 Mac 中收到此消息:

dyld: Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/nobre/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-Nobre/Project37.app/Contents/MacOS/Project37
  Reason: image not found
dyld: Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/nobre/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-Nobre/Project37.app/Contents/MacOS/Project37
  Reason: image not found
dyld: Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/nobre/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-Nobre/Project37.app/Contents/MacOS/Project37
  Reason: image not found

我使用本教程添加了一个 OSX 平台:

New Mac and Rad Studio XE2

编辑

有关错误的更多信息:

Process:         Teste2 [34270]
Path:            /Users/User/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-VM/Teste2.app/Contents/MacOS/Teste2
Identifier:      Teste2
Version:         ??? (???)
Code Type:       X86 (Native)
Parent Process:  launchd [94]

Date/Time:       2011-09-01 19:36:26.246 +0100
OS Version:      Mac OS X 10.6.8 (10K540)
Report Version:  6

Interval Since Last Report:          3908 sec
Crashes Since Last Report:           4
Per-App Crashes Since Last Report:   4
Anonymous UUID:                      58C242CA-C324-4A23-86ED-96D93C7C1A84

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread:  0

Dyld Error Message:
  Library not loaded: @rpath/libcgunwind.1.0.dylib
  Referenced from: /Users/User/Applications/Embarcadero/PAServer/scratch-dir/rafael_colucci-VM/Teste2.app/Contents/MacOS/Teste2
  Reason: image not found

Binary Images:
0x8fe00000 - 0x8fe4163b  dyld 132.1 (???) <4CDE4F04-0DD6-224E-ACE5-3C06E169A801> /usr/lib/dyld

Model: VMware Virtual Platform, BootROM 6.00, 1 processor, 30 GHz, 1 GB, SMC 1.30f3
Graphics: VMware SVGA II, VMware SVGA II, PCI, 16 MB
Network Service: Ethernet, Ethernet, en0
Parallel ATA Device: VMware Virtual IDE CDROM Drive
SCSI Device: SCSI Target Device @ 0
USB Device: VMware Virtual USB Hub, 0x0e0f  (VMWare, Inc.), 0x0002, 0x00200000 / 3
USB Device: VMware Virtual USB Keyboard, 0x05ac  (Apple Inc.), 0x020b, 0x00210000 / 4
USB Device: VMware Virtual USB Mouse, 0x0e0f  (VMWare, Inc.), 0x0003, 0x00100000 / 2

编辑

一些截图:

【问题讨论】:

  • @Warren 使用该程序! ;-) 这是 Rafael 今天下载的发布后软件。它是昨天发布的。
  • 什么?我找不到任何发布信息......或任何合法的下载网站......
  • 哇! :-) 好的,那就出来了!赞成第一个合法的 XE2 问题。
  • @whosrdaddy 简单,让您的客户开始要求 64 位版本!
  • 我在您的 Mac 屏幕截图中看到了 VMWare 窗口。 Embaracadero 表示不支持 Hackintosh(Windows 上的 Mac)。这样做也违反了苹果的许可。

标签: macos delphi delphi-xe2 firemonkey


【解决方案1】:

您必须按照这些说明在此处安装 PA 服务器 Installing and Running the PA on Mac OS X

【讨论】:

  • 看来他一定是安装了它,但不是很正确,那么?
  • 如果您将它安装到正确的目录(路径)并启动并运行 PA 服务器,那么它应该可以工作,您是从 XE2 IDE 运行它还是只运行二进制文件?如果是这样,请尝试从 IDE 运行它并确保为项目 Create remote profile on the development PC 设置远程配置文件
  • 如文档所述,我知道 C++ 的这一点,但试一试它可能会从 Create a remote profile for the Mac OS X target 对您有所帮助 > 在向导的第三页(C++ 目录信息)上,执行以下操作:检查复选框将此配置文件用于 C++ 项目。
  • 您是否有某种防火墙阻止传入连接?您是否尝试过测试连接?说什么?
  • 无防火墙,测试连接正常
【解决方案2】:

检查 RAD Studio 安装路径中的新“Redist”文件夹。您的应用程序需要其中的一些文件。

【讨论】:

  • 我已经做了,但是上面没有 libcgunwind.1.0.dylib 库。
【解决方案3】:

如果您转到 Mac 上安装 PAServer 的目录,您应该会看到那里存在 libcgunwind.1.0.dylib。

安装程序尝试通过创建一个 paserver.command 文件来提供帮助。如果您使用它启动,它应该正确设置您的库路径,以便找到上述文件。

如果您移动了 PAServer 位置,只需使用适当的路径手动更新 paserver.command 文件并运行。

【讨论】:

  • libcgunwind.1.0.dylib 在那里,paserver.command 没问题。但它不起作用。
  • 确保在启动 PAServer 时,您正在运行 paserver.command,而不是直接从命令提示符运行 paserver。然后,一旦你以这种方式启动了 paserver,就从 Delphi 执行。你试过了吗?
  • 尝试手动将 libcgunwind.1.0.dylib 复制到您的暂存目录下 Contents/MacOS 中的应用程序包中,然后运行您的应用程序。
  • 我做了,但在这种情况下,应用程序甚至在表单显示之前就关闭了。
【解决方案4】:

我已经为我解决了这个问题。我点击了 ide 中的绿色运行按钮,即“无需调试即可运行”。

点击旁边的运行按钮,在XE2中是我们老年人习惯的运行按钮。

【讨论】:

  • 甚至没有接近这个。我是否运行调试都没有关系。它不起作用。
  • 因为你说的根本没有任何意义。对不起。
  • 你刚刚对我最近关于堆栈溢出的所有问题投了反对票吗?
  • 我也无法让它工作,我已经足够远,可以在 osx 中获得一个弹跳的应用程序图标,但我没有主窗口,经过长时间的等待,弹跳停止但没有窗口,只是没有不行。
【解决方案5】:

Embarcadero 关于启动远程服务器的说明似乎不正确。使用 paserver.copmmand 文件启动服务器。然后我的项目运行良好。

然后部署。将构建配置更改为 Release 而不是 Debug。您必须将 libcgunwind.1.0.dylib 复制到 Redist\osx32 目录,否则发布将失败。然后再次尝试构建/发布。 “project”.rsm 文件位于调试目录中,而不是发布目录中。我将 .rsm 文件复制到发布目录,已部署并且它工作。我自己的演示项目和 controlsDemo 项目就是这种情况。任何一个都以相同的方式工作。

开始有点艰难,但一切正常。不知道他们为什么在控件演示上放置一个菜单栏,因为它不是很像 mac。将其更改为主菜单,一切正常。

比尔

【讨论】:

  • 我不必这样做。我做了 project->deploy,使用了 paserver.command,并确保运行 debug vs without 以消除我的错误。
【解决方案6】:

我刚刚安装了 Delphi XE2 试用版,我遇到了同样的问题 - 由于缺少 libcgunwind.1.0.dylib,无法在 Mac OS X 上启动 FireMonkey 应用程序。

但是,我相信我知道问题所在。该文件应该在 ($BDS)\Redist\osx32 文件夹中,准备好与您的 Delphi OSX 应用程序一起部署。但是,如果您只安装了 Delphi XE2 产品而不是完整的 RAD Studio XE2,这些可再发行文件将会丢失,例如根本没有安装。

无论文档中何处提及此特定文件,它都与 C++Builder 相关。因此,如果这真的是问题所在,那可能是 Embarcadero 方面的一个(不是那么小)疏忽。

回答您的问题 - 我相信如果您安装 C++Builder XE2 试用版或整个 RAD Studio XE2 软件包,您应该获得这些可再发行文件。

【讨论】:

  • 好的,我设法让它工作了。如果您在 Mac 上安装了 PAServer,则 libcgunwind.1.0.dylib 位于 Mac 上的 Embarcadero/PAServer 文件夹中。我将此文件复制到我的 Windows 机器到 ($BDS)\Redist\osx32 文件夹并从 Delphi XE2 中再次部署该项目,它现在正确地复制了该文件。或者,也可以尝试将库文件复制到 Mac 上系统路径环境变量范围内的某个位置。
  • Travis H 对此的回答实际上是正确的 - 如果您在 Mac 上安装 PAServer 并使用 paserver.command 文件启动它,它应该会更新正确的库路径以找到所需的库。
【解决方案7】:

如果您认为需要打开一个 cmd 窗口并执行以下命令来填充 Redist 文件夹,然后部署管理器将找到必要的文件:

C:\Program Files (x86)\Embarcadero\RAD Studio\9.0\Redist> redistsetup 默认

Deployment Manager 有一个“协调”按钮来刷新列表。

【讨论】:

    【解决方案8】:

    运行 paserver.command 有助于解决第一个问题,但大部分是我认为丢失的文件。

    检查部署,($BDS)\Redist\osx32 文件夹中的文件 libcgunwind.1.0.dylib 显示为灰色,因此我从 mac 上的 PAServer 复制了该文件并刷新,现在应用程序可以独立运行 :)

    【讨论】:

      【解决方案9】:

      控制台“你好,世界”

      release - works fine (Hello, World) appears in Platform Assistant
      

      终端窗口 调试 - 与发布相同

      空的二维表格

      release - Runtime error 231 at 000169AD
      debug - seems to run (bouncing Spartan Helmet icon in dock) but
      

      表单永远不会出现

      空的 3D 表格

      release - Platform Assistant terminal window shows "invalid pixel
      

      format”和“invalid context”消息,但会出现表单和菜单栏 里面有“Project1” 调试 - 与发布相同

      这些错误意味着您在安装在虚拟机上的 MacOS 下运行应用程序。在 VM 上安装 MacOS 与许可证冲突,因此 Embarcadero 不打算支持 VM 环境。

      【讨论】:

      • 我在这里遇到了同样的问题,我的 MAC 不是 VM,而是 MAC mini,我得到了与上述相同的症状。无效的像素格式可能是由于通过 VNC 连接造成的吗?
      • @Devart 如果您对某个答案有回复,请将其作为评论放在答案下方,而不是作为新答案。
      【解决方案10】:

      只需点击 paserver.command 而不是 paserver.. 有效!

      你甚至可以在 paserver.command 中最后一行的末尾添加 -password=(your password) (在最后一个 " 之后。然后它会在不询问密码的情况下启动。

      【讨论】:

        【解决方案11】:

        000169AD 处的运行时错误 231

        这是 VMWare 下的问题,请参阅 https://forums.embarcadero.com/message.jspa?messageID=393962

        解决方法是将 FMX.Filter.pas 复制到您的项目目录并修改:

        function FilterByName(const AName: string): TFilter;
        var
          i: Integer;
        begin
          Result := nil;
          if Filters = nil then
            Exit;
          if GlobalUseHWEffects  then
          begin
            for i := 0 to Filters.Count - 1 do
              if CompareText(TFilterClass(Filters.Objects[i]).FilterAttr.Name, AName) = 0
              then
              begin
                Result := TFilterClass(Filters.Objects[i]).Create;
                Exit;
              end;
          end;
        end;
        
        function FilterClassByName(const AName: string): TFilterClass;
        var
          i: Integer;
        begin
          Result := nil;
          if Filters = nil then
            Exit;
          if GlobalUseHWEffects  then
          begin
            for i := 0 to Filters.Count - 1 do
              if CompareText(TFilterClass(Filters.Objects[i]).FilterAttr.Name, AName) = 0
              then
              begin
                Result := TFilterClass(Filters.Objects[i]);
                Exit;
              end;
          end;
        end;
        

        并且在 dpr 中设置 GlobalUseHWEffects := False;

        这是因为 VMWare 和模拟图形硬件

        【讨论】:

        • 在“无头”运行您的 Mac(即没有连接显示器,仅对其进行远程连接)时,此问题也应该有所帮助:然后您的 Mac 没有运行 GPU HAL,并且 FMX 失败.
        【解决方案12】:

        【讨论】:

          【解决方案13】:

          确保您的 paserver 中的 paserver 路径后有一个空格。 -password 部分之前的命令。比如我的密码是firemonkey,行如下:

          "/Users/firemonkey/Applications/Embarcadero/PAServer/paserver" -password=firemonkey
          

          然后,确保从 paserver.command 文件运行 paserver。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-07
            • 2011-11-09
            • 2011-11-09
            • 2011-11-18
            • 2011-12-31
            • 2023-03-11
            • 2011-11-13
            • 2011-11-08
            相关资源
            最近更新 更多