puerts / backend-quickjs

BSD 3-Clause "New" or "Revised" License
14 stars 11 forks source link

window下dll版本quickjs后端 #5

Closed chexiongsheng closed 1 year ago

chexiongsheng commented 1 year ago

在UE的编辑器下,插件和Game是不同的dll。而quickjs后端有全局变量,静态链接后(插件和Game)都有一份。 这导致在Game模块下直接调用(仿)v8的api有可能崩溃。 上述问题可通过提供dll版本解决。

dll版本主要有几个调整 1、编译的调整; 2、类静态变量的访问放到v8-impl.cc,否则链接说找不到符号; 3、针对ue特有的,重载new和delete的调整:把context的new移动到v8-impl.cc,否则new时用的是ue的内存分配器,delete(Global<T>::Reset()调用的delete)用的是c++原生delete,会崩溃。