Tencent / puerts

PUER(普洱) Typescript. Let's write your game in UE or Unity with TypeScript.
Other
4.95k stars 693 forks source link

[UE] quickjs版本不能在JsEnv外使用静态绑定 #1500

Open chexiongsheng opened 1 year ago

chexiongsheng commented 1 year ago

原因:quickjs封装用了stl,如果用动态库,可能stl版本冲突,静态库因为有静态变量的存在外加UE Editor下的编译规则,导致外部调用v8 api会崩溃

有几个解决的方案: 1、检测到是quickjs,在外部使用静态绑定就用pesapi backend,但用户自己调用v8 api还是可能崩; 2、github只编译quickjs动态库,v8的封装源码引入;

chexiongsheng commented 10 months ago

还有个解决办法是JsEnv对内PES_EXTENSION_WITH_V8_API,对外用BUILDING_PES_EXTENSION,这可以强制使用pesapi,但这要求UEDataBinding.hpp提供p-api的实现。

PrivateDefinitions.Add("PES_EXTENSION_WITH_V8_API");
PublicDefinitions.Add("BUILDING_PES_EXTENSION");