我编写了一个 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”
初始化调用。包含额外的静态库将需要该库
在链接行中,可能需要链接额外的依赖项。
另请注意,静态链接可能会产生许可问题
第三方库。