我编写了一个haxe程序,试图与远程服务器进行通信。我已经成功地编译成了C++目标文件。可执行文件在我的系统上运行得很好。然而,当我尝试在另一台Windows电脑上运行相同的文件时,出现以下错误:
错误:无法加载模块std@socket_init__0
然后,我安装了haxe和hxcpp,这两个软件都能正常工作。我能够运行exe文件。现在我明白了,它依赖于hxcpp。
但是,这仍然没有解决我的问题,因为我想创建一个独立的应用程序。经过一些研究,我找到了一个文件(ExampleMain.CPP),其中包含以下指示,我认为这可能会解决我的问题。然而,我是一个初学者,不太理解。有人可以帮我详细解释一下吗?谢谢
ExampleMain.CPP
这是一个可以用来链接静态版本的示例主程序。 首先,您需要使用以下命令构建标准库的静态版本:
cd $HXCPP/runtime haxelib run 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 OS的一个示例:
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”初始化调用。额外静态库的包含需要在链接行中加入该库,并可能需要链接其他依赖项。此外,请注意,静态链接第三方库可能会涉及许可问题。
错误:无法加载模块std@socket_init__0
然后,我安装了haxe和hxcpp,这两个软件都能正常工作。我能够运行exe文件。现在我明白了,它依赖于hxcpp。
但是,这仍然没有解决我的问题,因为我想创建一个独立的应用程序。经过一些研究,我找到了一个文件(ExampleMain.CPP),其中包含以下指示,我认为这可能会解决我的问题。然而,我是一个初学者,不太理解。有人可以帮我详细解释一下吗?谢谢
ExampleMain.CPP
这是一个可以用来链接静态版本的示例主程序。 首先,您需要使用以下命令构建标准库的静态版本:
cd $HXCPP/runtime haxelib run 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 OS的一个示例:
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”初始化调用。额外静态库的包含需要在链接行中加入该库,并可能需要链接其他依赖项。此外,请注意,静态链接第三方库可能会涉及许可问题。