不提供访问石灰类的石灰遗产的解决方法
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
来解决此问题(或将<ndll name="lime" dir="ndll" />
添加到旧版的include.xml
),但使用systools 或linc_dialogs 等第三方库会是更简洁的解决方案。
【讨论】:
我试过了,但是 HaxePunk 程序不能编译。我发现在某些情况下我可以使用-Dnext
,这解决了这个问题,但这破坏了我在这个项目中没有使用的 HaxePunk 中的一些东西(仍然没有找到什么),所以我宁愿这样做这是正确的方法。我看到了 systools,但似乎在 Linux 上的对话框中断了(有一些关于此的问题从未得到解决); linc_dialogs 仅适用于 C++ 目标,虽然这并不是什么大不了的事(看看我将要使用它),但我喜欢保留最大的多功能性。不过话说回来,我想我会试一试的。
好吧,我很困惑,我不能让它再次崩溃(这是个好消息)......不过我尝试了 linc_dialogs,我想我会坚持下去,我正在使用它对于一个实用程序,所以我是否坚持 C++ 目标并不重要。此外,我不喜欢弄乱 libs 的选项和参数,所以我对 linc_dialogs 很好。感谢您指出这一点!
好吧,你是要求一种没有额外依赖的解决方法。 ;)
确实如此。但是我安装了它并没有给我带来任何麻烦,所以假设我很好:P以上是关于不提供访问石灰类的石灰遗产的解决方法的主要内容,如果未能解决你的问题,请参考以下文章