不提供访问石灰类的石灰遗产的解决方法

Posted

技术标签:

【中文标题】不提供访问石灰类的石灰遗产的解决方法【英文标题】:Workaround to lime-legacy not providing access to lime classes 【发布时间】:2016-11-15 20:59:44 【问题描述】:

我将 HaxePunk 2.5.6 与 OpenFL 3.6.1 和 Lime 2.9.1 一起使用;我在an issue on the HaxeFlixel GitHub 中读到,Lime 阻止访问其遗留类。这是个大问题,因为 HaxePunk 默认使用 legacy。我想使用lime.ui.FileDialog 打开和保存文件,但由于HaxePunk 被遗留在遗留问题上,显然这不起作用(lime.ui.FileDialog 读作null 而不是Class<lime.ui.FileDialog> ...)。有解决方法吗?我在 OpenFL 中没有看到任何可以替代它的东西,所以我真的迷路了。显然我不想安装任何额外的库,除非真的有必要。在编译覆盖-Dlegacy 时使用-Dnext-Dhybrid 会破坏一切,因此这也不是解决方案。

提前致谢!

【问题讨论】:

经过进一步检查,OpenFL 似乎实现了openfl.net.FileReference 类,这正是我所需要的。除了猜猜是什么? openfl-legacy 也没有实现它,所以,我还是和以前一样卡住了。 【参考方案1】:

您可以转到<haxelib directory>/lime/2,9,1/legacy 并通过删除此行来撤消对the relevant commit 中include.xml 的更改:

<haxeflag name="--macro" value="exclude('lime')" />

但是,如this thread 中所述,这会增加对lime.ndll 的依赖(与lime-legacy.ndll 不同,这是唯一一个复制到/bin 的旧版本) ,因此您的二进制文件在运送到其他未安装 Haxe 的计算机时会崩溃。

您可以通过手动复制lime.ndll 来解决此问题(或将&lt;ndll name="lime" dir="ndll" /&gt; 添加到旧版的include.xml),但使用systools 或linc_dialogs 等第三方库会是更简洁的解决方案。

【讨论】:

我试过了,但是 HaxePunk 程序不能编译。我发现在某些情况下我可以使用-Dnext,这解决了这个问题,但这破坏了我在这个项目中没有使用的 HaxePunk 中的一些东西(仍然没有找到什么),所以我宁愿这样做这是正确的方法。我看到了 systools,但似乎在 Linux 上的对话框中断了(有一些关于此的问题从未得到解决); linc_dialogs 仅适用于 C++ 目标,虽然这并不是什么大不了的事(看看我将要使用它),但我喜欢保留最大的多功能性。不过话说回来,我想我会试一试的。 好吧,我很困惑,我不能让它再次崩溃(这是个好消息)......不过我尝试了 linc_dialogs,我想我会坚持下去,我正在使用它对于一个实用程序,所以我是否坚持 C++ 目标并不重要。此外,我不喜欢弄乱 libs 的选项和参数,所以我对 linc_dialogs 很好。感谢您指出这一点! 好吧,你要求一种没有额外依赖的解决方法。 ;) 确实如此。但是我安装了它并没有给我带来任何麻烦,所以假设我很好:P

以上是关于不提供访问石灰类的石灰遗产的解决方法的主要内容,如果未能解决你的问题,请参考以下文章

spring的特点

应该将 phpunit 或石灰与 symfony 一起使用吗? [关闭]

安装haxe石灰错误

如何设置单选按钮默认签入反应?

如何从我的列表中删除重复项? [复制]

住一层窗外一棵大树小区里的孩子总上树又吵还总窥视屋里怎么办?