Godot -为windows加密编译,Scons 编译出错 visual studio 版本为17.13

此文章我在B站也发了,署名Xa_Xa

一、scons platform=windows 命令之后报错

报错

[Initial build] Compiling thirdparty\thorvg\src\loaders\svg\tvgSvgCssStyle.cpp ...

[Initial build] Compiling thirdparty\thorvg\src\loaders\svg\tvgSvgLoader.cpp ...

[Initial build] Compiling thirdparty\thorvg\src\loaders\svg\tvgSvgPath.cpp ...

[Initial build] Compiling thirdparty\thorvg\src\loaders\svg\tvgSvgSceneBuilder.cpp ...

[Initial build] Compiling thirdparty\thorvg\src\loaders\svg\tvgSvgUtil.cpp ...

[Initial build] Compiling thirdparty\thorvg\src\loaders\svg\tvgXmlParser.cpp ...

[Initial build] Compiling thirdparty\thorvg\src\loaders\raw\tvgRawLoader.cpp ...

D:\Vis Studio\VC\Tools\MSVC\14.43.34808\include\mutex(37): error C3861: ��_Mtx_init_in_situ��: �Ҳ�����ʶ��

D:\Vis Studio\VC\Tools\MSVC\14.43.34808\include\mutex(536): error C3861: ��_Cnd_init_in_situ��: �Ҳ�����ʶ��

D:\Vis Studio\VC\Tools\MSVC\14.43.34808\include\condition_variable(56): error C3861: ��_Cnd_init_in_situ��: �Ҳ�� ���ʶ��

scons: *** [thirdparty\thorvg\src\loaders\svg\tvgSvgLoader.windows.editor.x86_64.obj] Error 2

D:\Vis Studio\VC\Tools\MSVC\14.43.34808\include\mutex(37): error C3861: ��_Mtx_init_in_situ��: �Ҳ�����ʶ��

D:\Vis Studio\VC\Tools\MSVC\14.43.34808\include\mutex(536): error C3861: ��_Cnd_init_in_situ��: �Ҳ�����ʶ��

D:\Vis Studio\VC\Tools\MSVC\14.43.34808\include\condition_variable(56): error C3861: ��_Cnd_init_in_situ��: �Ҳ�� ���ʶ��

scons: *** [thirdparty\thorvg\src\loaders\raw\tvgRawLoader.windows.editor.x86_64.obj] Error 2

scons: building terminated because of

询问AI,认为是这些错误表明编译器无法识别 _Mtx_init_in_situ 和 _Cnd_init_in_situ 函数

二、reddit找到相同的问题回答:

目测是版本太新了,评论有两种方法,一种是降级到VS 17.11.5 ,另一种
 

去godot4.x的源文件里 找到3个文件,并改三个地方:

godot-4.3-stable\thirdparty\thorvg\src\common tvgLock.h

godot-4.3-stable\thirdparty\thorvg\src\renderer tvgTaskScheduler.h


 

1.在 tvgLock.htvgTaskScheduler.h 文件中

删除#define _DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR

2.在 platform/windows/detect.py文件中

添加 "_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR" to CPPDEFINES


 

最后再次尝试scons platform=windows

成功!

bin目录下的:


 


 


 


 

希望能帮到和我一样的家人们~~

链接:https://www.reddit.com/r/godot/comments/1gw220q/latest_visual_studio_update_1712_broke_scons/

github链接:https://github.com/godotengine/godot/issues/95861

### 回答1: 由于Godot引擎本身是使用C++编写的,因此可以在Windows环境下使用Visual Studio编译生成ARM Linux可执行文件。 编译过程如下: 1. 首先需要安装Visual StudioWindows SDK,并配置好编译环境。 2. 下载Godot源代码,并使用scons工具构建Godot。 3. 配置编译选项,设置目标平台为ARM Linux。 4. 编译Godot源代码,生成可执行文件。 5. 将生成的可执行文件部署到目标平台上。 请注意,这个编译过程需要一定的技术知识,如果您不熟悉编译操作,建议您先了解相关知识。 ### 回答2: 在Windows编译Godot引擎到ARM Linux需要进行一系列步骤。下面是一个简单的教程: 1. 安装必要的软件:首先,您需要安装Git进行版本控制,CMake用于构建工程,以及交叉编译工具链(即arm-linux-gnueabihf)用于生成ARM Linux目标代码。您可以在其官方网站上找到并下载这些软件。 2. 克隆Godot源代码:使用Git工具,在命令行中克隆Godot引擎的源代码仓库。执行以下命令:git clone https://github.com/godotengine/godot.git 3. 配置交叉编译工具链:通过设置环境变量或在CMake配置过程中指定交叉编译工具链的路径,让CMake知道您想要构建ARM Linux目标。 4. 生成Makefile文件:使用CMake配置和生成Godot引擎的Makefile文件。在命令行中进入克隆的Godot源代码目录,并执行以下命令:cmake -B <build_directory> -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release。 5. 编译Godot引擎:在步骤4中生成的构建目录中,执行以下命令编译Godot引擎:cmake --build <build_directory> --config Release。 6. 生成导出模板:在成功编译Godot引擎后,在构建目录中执行以下命令来生成ARM Linux的导出模板:scons platform=linuxbsd target=release_debug tools=no。 7. 导出ARM Linux应用程序:根据您的需求,您可以使用Godot编辑器或命令行工具导出ARM Linux的应用程序。导出后,您将获得一个与ARM Linux操作系统兼容的可执行文件。 请注意,这个教程并不是详尽无遗的,并且可能会因不同的配置和源代码版本而有所不同。因此,在进行这个编译过程时,最好参考Godot官方文档中的具体指引和要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值