You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法使用AngelScript自动包装函数,C++编译失败求助

小众处理器架构下《Amnesia: The Dark Descent》引擎AngelScript绑定崩溃修复问题

我正在为一款小众处理器架构编译《Amnesia: The Dark Descent》的HPL2引擎,已成功完成构建并启动游戏,但加载第一关时直接崩溃。日志显示,引擎AngelScript绑定逻辑中,LowLevelSystemSDL.cpp里的RegisterGlobalFunction调用始终执行失败。

我发现这个问题与同类项目中曾出现的bug一致,对应的解决方案建议使用AngelScript的自动包装函数来修正。于是我尝试将原代码:

if(mpScriptEngine->RegisterGlobalFunction(asFuncDecl.c_str(),asFUNCTION(pFunc),asCALL_STDCALL)<0)

替换为:

if(mpScriptEngine->RegisterGlobalFunction(asFuncDecl.c_str(),WRAP_FN(pFunc),asCALL_GENERIC)<0)

但编译时出现以下两个错误:

参数“pFunc”的值不能用作常量
if(mpScriptEngine->RegisterGlobalFunction(asFuncDecl.c_str(),WRAP_FN(pFunc),asCALL_GENERIC)<0)

函数模板“gw::Id::f [with T=void *]”无匹配实例
对象类型为:gw::Id<void *>
#define WRAP_FN(name) (::gw::id(name).TMPL f< name >())

请问在不完全重写引擎脚本注册方式的前提下,是否有办法修复该问题?需说明的是,该引擎必须基于AngelScript 2.19版本构建(已确认新版本可在目标平台运行,但引擎依赖限制必须使用2.19)。

内容的提问来源于stack exchange,提问作者DarkMalex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 15:23:15