问题标签 [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.
c++ - hxcpp 如何捕获 C++ 分段错误?
在项目的这个时间点,我正在用 haxe(一个迷你 lisp 计算器:D)编写一个命令行工具,我无法阻止用户对不存在的函数进行无效调用或使用错误的参数(它需要额外的包装器) ,所以我虽然采用了pythonic方法:让它崩溃并捕获错误。但是,我似乎无法以任何方式从 haxe 捕获 C++ 分段错误。
例子:
代码看起来如何?
然而,似乎没有办法(或者我找不到它)将错误作为异常捕获并从中恢复。有没有人知道这种让它崩溃并从 HaxeC++ 中的错误中恢复的方法有多大可能?请注意,在 Neko 或 javascript 中这不是问题。
c++ - 如何在 Haxe 项目中使用简单的 c++ 代码?
我在 cpp 中有一个类,例如:
在任何 .hx 文件中,我想使用在 cpp 中定义的 Foo 类,如下所示:
预期输出为
作为说明,我搜索并阅读了一些关于hxcpp和Haxe CFFI的文档,但这些文档的某些部分太复杂了。我是 Haxe 的初学者,我需要基本和简单的步骤来解决这个问题。谢谢。
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 目标
datetime - 如何在 Haxe 中以毫秒为单位获取当前时间?
我需要一个在 CPP 目标上以毫秒为单位返回本地时间的函数。
我尝试了 Haxe 的Date
课程,但Date.now()
给了我几秒钟的时间。
game-engine - Luxe 在构建到 Windows 目标时给出错误
我一直在尝试通过流向 Windows 目标来构建 luxe,但它一直在给我错误。我尝试使用“--arch 64”和“--arch 32”进行构建,结果相同。
我还按照安装指南的指示安装了 hxcpp(只是把它放在那里以便你知道)、OpenAL 和 Visual C++。
一切都是最新的。
Web 构建工作得非常好。
这是错误日志:
haxe - Haxe – 使用可序列化的 Int64 键实现 Map 的正确方法(本机目标)
我需要知道,用 64 位键实现 Maps 的正确方法是什么。它们中不会有这么多的项目,我只需要将密钥的各个位用于具有足够大地址空间的各种事物,并且我需要它非常快,因此String
密钥可能会太慢。到目前为止,我尝试过:
这显然不起作用,因为haxe.Int64
创建了一个对象实例。使用cpp.Int64
工作,因为它由于某种原因在我的 cpp 代码中回退到 32 位整数,我不知道我做错了什么。我怎样才能强制它“保持”64位,或者我应该以其他方式做到这一点?
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”初始化调用。包含额外的静态库将需要链接行中的库,并且可能需要链接额外的依赖项。另请注意,静态链接第三方库可能会涉及许可问题。
profiling - HXCPP Profiler 不会创建日志文件
我正在将 Haxe 用于游戏并使用 HXCPP 为 C++ 目标进行编译。我试图让内置分析器工作(cpp.vm.Profiler
),但我无法让它创建转储文件。我的代码就这么简单:
我使用 HaxePunk 作为输入,并断言分析器调用确实正在执行(我确保使用了几个trace
调用)。我使用定义HXCPP_STACK_TRACE
和HXCPP_PROFILER
编译。
我做错了什么,还是错过了什么?
编辑:这里有一些代码,当使用编译时haxe -D HXCPP_PROFILER -D HXCPP_STACK_TRACE -main Main -cpp test
,实际上并没有创建任何明显的“profiler.txt”文件:
try-catch - 如何使 FlashDevelop 显示行错误以及在 Haxe 中发生的位置?
我使用 Haxe 已经有一段时间了,我正在使用 Windows 目标 (OpenFL) 进行调试。
例如,当我在某处放置try
/catch
时,它只是说"Null object reference"
- 它没有说行号和类,所以我必须继续跟踪以查找它在哪一行引发了错误。
有人能帮我吗?
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 android
在project
subdir 中构建 Android 库时,它正在使用-DHXCPP_ANDROID_PLATFORM=26
,而我的项目的 Lime 构建正在使用-DHXCPP_ANDROID_PLATFORM=9
,所以这不是很好。但是,我对Android的了解并不多,但是我读过SDK版本和Android平台是两个不同的东西,或者我读过。
对此的任何帮助将不胜感激。
编辑:好的,所以发生了一些奇怪的事情:到目前为止,我一直试图通过将 APK 复制到我的手机文件并从那里启动它来手动安装 APK,但它一直在崩溃。我尝试lime test android
了一次,完全没有改变任何东西,它运行良好,从那时起我可以像以前一样手动安装 APK,并且错误再也没有发生过。我无法复制它,但它仍然是一个未决案例。