问题标签 [hxcpp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
196 浏览

c++ - hxcpp 如何捕获 C++ 分段错误?

在项目的这个时间点,我正在用 haxe(一个迷你 lisp 计算器:D)编写一个命令行工具,我无法阻止用户对不存在的函数进行无效调用或使用错误的参数(它需要额外的包装器) ,所以我虽然采用了pythonic方法:让它崩溃并捕获错误。但是,我似乎无法以任何方式从 haxe 捕获 C++ 分段错误。

例子:

代码看起来如何?

然而,似乎没有办法(或者我找不到它)将错误作为异常捕获并从中恢复。有没有人知道这种让它崩溃并从 HaxeC++ 中的错误中恢复的方法有多大可能?请注意,在 Neko 或 javascript 中这不是问题。

0 投票
1 回答
267 浏览

c++ - 如何在 Haxe 项目中使用简单的 c++ 代码?

我在 cpp 中有一个类,例如:

在任何 .hx 文件中,我想使用在 cpp 中定义的 Foo 类,如下所示:

预期输出为


作为说明,我搜索并阅读了一些关于hxcppHaxe CFFI的文档,但这些文档的某些部分太复杂了。我是 Haxe 的初学者,我需要基本和简单的步骤来解决这个问题。谢谢。

0 投票
0 回答
50 浏览

haxe - Haxe - 错误,在转换为父类型后尝试序列化对象

我正在尝试这样做:

编译,但给出运行时错误:

Cast 有效,它在序列化程序行上失败。除了这两个都是真的Std.is(playerCore, PlayerCore)Std.is(playerCore, Player)我不知道这是否是预期的结果。这是 Haxe / hxcpp 错误还是我做错了什么?

或者,我需要将 Player 类型的对象转换为它的父类型 PlayerCore (“剥离” Player 类型功能),然后对其进行序列化。有没有办法正确地做到这一点,还是我需要手动创建新对象并复制所有参数?

Haxe 3.2.1,hxcpp 3.2.180,mac 目标

0 投票
3 回答
2538 浏览

datetime - 如何在 Haxe 中以毫秒为单位获取当前时间?

我需要一个在 CPP 目标上以毫秒为单位返回本地时间的函数。

我尝试了 Haxe 的Date课程,但Date.now()给了我几秒钟的时间。

0 投票
1 回答
182 浏览

game-engine - Luxe 在构建到 Windows 目标时给出错误

我一直在尝试通过流向 Windows 目标来构建 luxe,但它一直在给我错误。我尝试使用“--arch 64”和“--arch 32”进行构建,结果相同。

我还按照安装指南的指示安装了 hxcpp(只是把它放在那里以便你知道)、OpenAL 和 Visual C++。

一切都是最新的。

Web 构建工作得非常好。

这是错误日志:

0 投票
1 回答
202 浏览

haxe - Haxe – 使用可序列化的 Int64 键实现 Map 的正确方法(本机目标)

我需要知道,用 64 位键实现 Maps 的正确方法是什么。它们中不会有这么多的项目,我只需要将密钥的各个位用于具有足够大地址空间的各种事物,并且我需要它非常快,因此String密钥可能会太慢。到目前为止,我尝试过:

http://try.haxe.org/#7CDb2

这显然不起作用,因为haxe.Int64创建了一个对象实例。使用cpp.Int64工作,因为它由于某种原因在我的 cpp 代码中回退到 32 位整数,我不知道我做错了什么。我怎样才能强制它“保持”64位,或者我应该以其他方式做到这一点?

0 投票
1 回答
1089 浏览

c++ - Haxe - 创建 C++ 独立可执行文件

我编写了一个尝试与远程服务器通信的 haxe 程序。我能够成功编译到 C++ 目标。可执行文件在我的系统上运行得很好。但是,当我尝试在另一个 Windows 框中运行相同的内容时,它会失败并出现以下错误

错误:无法加载模块 std@socket_init__0

然后我安装了 haxe 和 hxcpp,它们就像一个魅力。我能够运行exe。我现在明白了对 hxcpp 的依赖。

那仍然没有解决我的问题,因为我想创建一个独立的应用程序。经过一番研究,我找到了一个文件(ExampleMain.CPP),其中包含我认为可以解决我的问题的以下说明。但是,我是新手,不太了解。有人可以帮我解决这个问题吗?谢谢

示例Main.CPP

这是一个示例主线,可用于链接静态版本。首先,您需要构建标准库的静态版本,其中:

cd $HXCPP/运行时

haxelib 运行 hxcpp BuildLibs.xml -Dstatic_link

然后是你的应用程序的静态版本(注意:'static_link'之前的额外空间):

haxe -main YourMain -cpp cpp -D static_link

然后,您需要将上述库与此(或修改后的版本)主链接。您可以选择创建一个 VisualStudio 项目,并从 $HXCPP/bin/Windows/(std,regexp,zlib).lib 和您的应用程序库中添加库。

另请注意,如果您使用 -debug 标志进行编译,您的库将具有不同的名称。

从 Windows 的命令行链接(仅调试版本需要 user32.lib):

cl ExampleMain.cpp cpp/YourMain.lib $HXCPP/bin/Windows/std.lib $HXCPP/bin/Windows/zlib.lib $HXCPP/bin/Windows/regexp.lib user32.lib

从其他操作系统,编译+链接命令会有所不同。这是一个用于mac的:

g++ ExampleMain.cpp cpp/Test-debug.a $HXCPP/bin/Mac/regexp.a $HXCPP/bin/Mac/std.a $HXCPP/bin/Mac/zlib.a

如果您希望添加除这 3 个之外的其他静态库(例如,nme),您还需要使用“-Dstatic_link”标志编译它们,并调用它们的“register_prims”初始化调用。包含额外的静态库将需要链接行中的库,并且可能需要链接额外的依赖项。另请注意,静态链接第三方库可能会涉及许可问题。

0 投票
1 回答
166 浏览

profiling - HXCPP Profiler 不会创建日志文件

我正在将 Haxe 用于游戏并使用 HXCPP 为 C++ 目标进行编译。我试图让内置分析器工作(cpp.vm.Profiler),但我无法让它创建转储文件。我的代码就这么简单:

我使用 HaxePunk 作为输入,并断言分析器调用确实正在执行(我确保使用了几个trace调用)。我使用定义HXCPP_STACK_TRACEHXCPP_PROFILER编译。

我做错了什么,还是错过了什么?

编辑:这里有一些代码,当使用编译时haxe -D HXCPP_PROFILER -D HXCPP_STACK_TRACE -main Main -cpp test,实际上并没有创建任何明显的“profiler.txt”文件:

0 投票
1 回答
120 浏览

try-catch - 如何使 FlashDevelop 显示行错误以及在 Haxe 中发生的位置?

我使用 Haxe 已经有一段时间了,我正在使用 Windows 目标 (OpenFL) 进行调试。

例如,当我在某处放置try/catch时,它只是说"Null object reference"- 它没有说行号和类,所以我必须继续跟踪以查找它在哪一行引发了错误。

有人能帮我吗?

0 投票
0 回答
178 浏览

android - Lime 5.2.1 / Android 4.3:dlopen 在 stpcpy 上失败

我正在尝试为 Android 构建一个空的 HaxePunk 项目来测试构建链,虽然我从未收到任何错误,但我的所有尝试都在运行时崩溃并出现相同的错误消息:

我正在一部装有 Android 4.3 的相当旧的手机上运行该可执行文件;索尼 Xperia M。

我一直在做一些研究,到目前为止,我大多看到重复的事情:更新你的 NDK(我一直在使用 android dev 网站上的最新版本,而不是lime setup android下载的那个),为以前的 API 版本构建(我也在<config:android target-sdk-version="18" />我的 project.xml 文件中使用它)。所以我不知道我做错了什么,如果有的话。

我发现的另一件事是我使用的是 HXCPP 的 git 版本,当我neko build.n androidprojectsubdir 中构建 Android 库时,它正在使用-DHXCPP_ANDROID_PLATFORM=26,而我的项目的 Lime 构建正在使用-DHXCPP_ANDROID_PLATFORM=9,所以这不是很好。但是,我对Android的了解并不多,但是我读过SDK版本和Android平台是两个不同的东西,或者我读过。

对此的任何帮助将不胜感激。

编辑:好的,所以发生了一些奇怪的事情:到目前为止,我一直试图通过将 APK 复制到我的手机文件并从那里启动它来手动安装 APK,但它一直在崩溃。我尝试lime test android了一次,完全没有改变任何东西,它运行良好,从那时起我可以像以前一样手动安装 APK,并且错误再也没有发生过。我无法复制它,但它仍然是一个未决案例。