1

我在 Mac OSX 10.7 上,但我相信这也会出现在 10.8+

尝试运行(在 erlang 内)

wx:demo().

这将产生以下输出:

beam.smp[2733:f0b] CFURLCreateWithString 传递了这个无效的 URL 字符串:'/System/Library/CoreServices/CommonCocoaPanels.bundle'(文件系统路径而不是 URL 字符串)。创建的 URL 不适用于大多数文件 URL 函数。应该使用 CFURLCreateWithFileSystemPath 或 CFURLCreateWithFileSystemPathRelativeToBase 代替。

现在演示运行得很好,但为什么要输出这一行呢?

它与 erlang 无关,经过一番浏览后,似乎这是一个 wxWidgets 错误,因为人们在 python 中也有同样的问题,并且由于输出中的 CommonCocoaPanels.bundle,它以 Mac OSX 为中心。

它现在真的只是一个烦恼,因为一切都运行得很好。但这很可能是一个错误,不是吗?

如何修复?

4

3 回答 3

0

你用的是哪个版本的wxWidgets?我使用wxWidgets 2.8.12under Mac OS 10.6.8,自定义构建Carbonwith -arch i386

在 wxWidgets 2.8.x 中,Carbon 是推荐的库,因为它更稳定。Cocoa 在 wxWidgets 2.8.x 中是不完整的。如果您对使用 Cocoa 感兴趣,您应该从 wxWidgets 2.9.x 开始,其中 Cocoa 更完整。

框架本身看起来对 Max OS 有点陌生(可能是因为 Carbon),一小部分 API 被破坏了(这不会阻止程序实际运行 - 只是一些小烦恼)。

于 2013-01-01T00:31:20.070 回答
0

供我将来参考,以及其他人的参考..

以下将在不显示上述错误消息的情况下工作。

P = wx:new(),
F = wxFrame:new(P, 1, "main", [{size, {600,600}]),

WindowOpts = [{size, {600,600}}, {style, ?wxSUNKEN_BORDER}],
W = wxWindow:new(F, ?wxID_ANY, WindowOpts),

wxFrame:connect(F, close_window, [{skip,true}]),
wxWindow:connect(W, paint, [{skip, true}]),
wxFrame:show(F),
wxFrame:centre(F).

奇怪的是,即使我逐行进行了所有的试错调试,也没有简单的方法可以深入了解它。原来是包含一个:

process_flag(trap_errors, true)

会产生那个错误。我很肯定没有什么崩溃会调用标志的动作。

深度错误。后果不大。

让我们希望他们在 3.0 升级中修复它。

于 2013-01-06T05:55:06.653 回答
0

据我所知,wxErlang 目前在 MacOS 上被破坏了,维护者承诺在 wxWidgets 3.0 发布后修复它。

于 2012-12-31T07:56:19.790 回答