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

2024-04-10

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

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

然后我安装了 haxe 和 hxcpp,它们非常有用。我能够运行该exe。我现在明白了对 hxcpp 的依赖。

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

示例Main.CPP

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

cd $HXCPP/运行时

haxelib 运行 hxcpp BuildLibs.xml -Dstatic_link

然后是应用程序的静态版本(注意:“静态链接”之前有额外的空格):

haxe -main YourMain -cpp cpp -D static_link

然后,您需要将上述库与此(或修改版本)main 链接。 您可以选择创建一个 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” 初始化调用。包含额外的静态库将需要该库 在链接行中,可能需要链接额外的依赖项。 另请注意,静态链接可能会产生许可问题 第三方库。


我不确定,但似乎您已经采取了 hxcpp 为您所做的相同的额外步骤。当您编译独立应用程序时,它实际上是独立的,并且本身不依赖于 hxcpp - 但它依赖于您可能使用过的 hxcpp 中的标准库。例如,如果您使用正则表达式,您将需要 hxcpp 具有的 regexp.dll,正如您所指出的。 haxe 标准库位于 std.dll 中,如果您使用 zip 包中的压缩,则位于 zlib 中。

如果我没记错的话,默认是动态引用这些组件。为了使您的应用程序按照您的建议独立,您只需将这些 dll 与二进制文件一起复制即可。

如果您想从 haxe 代码自动静态链接到这些库组件,只需import的类型来自cpp.link http://api.haxe.org/cpp/link/index.html包裹。这指示 hxcpp 自动将其库作为编译的一部分,将其静态链接到二进制文件而不是动态链接。不需要额外的步骤!

简短回答: add import cpp.link.StaticStd;以及链接包中的任何其他库组件到您的代码。它可以在任何地方,只要导入,就会链接进去。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Haxe - 创建 C++ 独立可执行文件 的相关文章

随机推荐

  • 是否可以在 Monotouch 中使用 NSZombieEnabled?

    我一直在阅读有关环境变量的信息NSZombieEnabled http www cocoadev com index pl NSZombieEnabled我想知道目前是否可以在 Monotouch 运行时中使用它 如果没有 是否有合适的替代
  • 以编程方式设置打印机功能

    我正在开发一个 C 桌面应用程序 我需要更改一些打印机设置并打印一些图片 在我的程序中 我已经可以设置纸张尺寸 打印机名称等 如果我进入打印机首选项的高级选项 有一个名为 打印机功能 的部分 我不知道如何访问打印机设置中的参数 例如 有 边
  • sudoers 是世界可写错误[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我更改了 Ubuntu 12 10 上的 ect 文件权限 以便我可以编辑 bash bashrc 以便 Neo4j 可以看到 JVM 但现在当我尝试
  • ORACLE MINUS 关键字的 ANSI SQL 标准

    我有一个查询 我想要与 ANSI SQL 标准兼容 在这个 使用 oracle 查询 MINUS key work 我想要 ANSI SQL 这是 放置于 MINUS 关键字 SELECT F selected UPPER a busine
  • Angular-UI 路由器:嵌套视图不起作用

    构建多步骤表单 向导 原来是在关注本教程 https scotch io tutorials angularjs multi step form using ui router 效果很好 但我现在正在尝试对其进行调整 以便将第一步嵌入到主页
  • Perl 正则表达式在相同情况下替换

    如果您在 perl 中有一个简单的正则表达式替换 如下所示 line s JAM AAA g 我将如何修改它 以便它查看匹配并使替换与匹配的大小写相同 例如 JAM 将变成 AAA jam 会变成 aaa 基于 Unicode 的解决方案
  • Git 子模块初始化异步

    当我跑步时git submodule update init第一次在有很多子模块的项目上 这通常需要很多时间 因为大多数子模块都存储在缓慢的公共服务器上 是否可以异步初始化子模块 从 Git 2 8 开始 你可以这样做 git submod
  • PHP/C++:将值注入 EXE 文件 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想动态地将一个值注入到 EXE 文件中 我过去接触过的一家公司给了我一个 EXE 存根 我可以在用户下载它之前使用 PHP 动态注入
  • Qt 构建可以开箱即用静态链接?

    我使用 Qt 构建了一个小型应用程序 事实证明 我需要从头开始重新配置 Qt 以便能够静态链接 我以前做过 我记得那是一个非常漫长的过程 那么有人知道提供开箱即用静态链接功能的 Qt SDK 安装程序吗 此外马丁 贝克特的回答 https
  • 比较 data.table 的两行并仅显示有差异的列[重复]

    这个问题在这里已经有答案了 我得到了一个大的 data table 其中包含不同类型的列 例如数字或字符 例如 data table name c A A val1 c 1 2 val2 c 3 3 cat c u v name val1
  • 在 Apache POI 3.9 中,使用 autosizeColumn 同一列上的图像会被拉伸

    我在 Excel 工作表中有一张图像和图像下方的一些文本 当我将 autoSizeColumn 应用于文本呈现的列时 图像也会被拉伸 我还将锚类型设置为 2 但这并不能保护图像调整大小 我在这里发布一些示例代码 public static
  • Spark:JavaRDD 到 JavaPairRDD<>

    我有一个JavaRDD
  • 透明精灵表有黑色背景

    我正在使用 Python 和 Pygame 开发游戏 我为其中一个敌人创建了一个精灵表 并使其代码正常工作 问题是图像看起来有黑色背景 即使它是透明图像 它的代码是这样的 enemySheet pygame image load resou
  • 使用 selenium Java (Mac OSX) 将 Firefox 浏览器置于前端

    我正在使用三个火狐驱动程序实例进行自动化 我需要将当前活动的火狐浏览器置于前面 因为我正在使用一些机器人类进行某些操作 我曾在 mac 中尝试过针对 google chrome 的 java 脚本警报 相同的操作 并且工作正常 在 Wind
  • 在Android 4.2 API 17上读取Sqlite Cursor carsh

    我有一张桌子145行 当我尝试获取所有数据时crashed on android 4 2 BUT它工作得很好android 4 4 emulator public ArrayList
  • 为什么我不能得到与 GridSearchCV 相同的结果?

    GridSearchCV只返回每个参数化的分数 我还希望看到 Roc 曲线以更好地理解结果 为了做到这一点 我想采用性能最好的模型GridSearchCV并重现这些相同的结果 但缓存概率 这是我的代码 import numpy as np
  • 超低延迟硬实时多线程 x86 代码的意外周期性行为

    我正在具有 RT 优先级的专用 CPU 上循环运行代码以进行多次迭代 并希望长时间观察其行为 我发现代码有一个非常奇怪的周期性行为 简而言之 这就是代码的作用 Arraythread while 1 if flag Multiply mat
  • 通过透明 Windows 窗体防止鼠标点击

    我正在制作一个小工具 用于在浮动侧边栏中切换 笔 按钮后用鼠标在屏幕上绘图 我已经做到了这一点 请不要笑 方法是使用最顶层的窗口窗体及其背景 因为它的透明键覆盖整个屏幕 当我处于绘图模式时 我需要使鼠标不会点击表单到下面的内容上 我尝试按照
  • 如何搜索一长串 JavaScript 对象以查找“sent: 0”的第一个实例

    这里有一个主要的循环问题 我的数据如下所示 var mailouts signUp date sent 1 lesson1 sent 1 time 20 lesson2 sent 0 time 20 lesson3 sent 0 time
  • Haxe - 创建 C++ 独立可执行文件

    我编写了一个 haxe 程序 尝试与远程服务器进行通信 我能够成功编译到 C 目标 该可执行文件在我的系统上运行得很好 但是 当我尝试在另一个 Windows 盒子上运行相同的命令时 它失败并出现以下错误 错误 无法加载模块 std soc