首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haxe -创建一个C++独立可执行文件

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

Stack Overflow用户
提问于 2016-12-02 10:52:38
回答 1查看 1.2K关注 0票数 3

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

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

然后我安装了haxe和hxcpp,它们工作起来很有魅力。我能运行exe。我现在了解了hxcpp的依赖性。

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

ExampleMain.CPP

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

cd $HXCPP/运行时

haxelib运行hxcpp BuildLibs.xml -Dstatic_link

然后是应用程序的静态verion (注意:“static_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/ExampleMain.cpp/std.lib$HXCPP/bin/ExampleMain.cpp/zlib.lib$HXCPP/bin/ExampleMain.cpp/regexp.lib user32.lib

与其他操作系统相比,compile+link命令将是不同的。这是mac的一个:

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

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

EN

回答 1

Stack Overflow用户

发布于 2016-12-15 18:38:17

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

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

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

简短答案:将链接包中的import cpp.link.StaticStd;和任何其他库组件添加到代码中。它可以在任何地方,只要它是进口的,它将被连接到。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40930486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档