Rob*_*uld 61 javascript c++ embed
我想在我的业余爱好游戏引擎中嵌入Javascript.现在我们已经推出了第5代Javascript引擎(速度极快)我很好奇你会选择在C++框架中嵌入什么引擎(包括嵌入它的实际容易程度)?
注意:为了说清楚,我对DOM脚本或在浏览器中编写Javascript不感兴趣.
这是迄今为止的链接汇编和线程的一些提示
仅仅为了记录,我喜欢Lua并且已经在游戏引擎中嵌入了大约5次工作.
然而,现在这是一个业余爱好项目,我认为Javascript被大多数Web开发人员所熟知,并且因为它的ECMA,Flash和Flex开发人员,使用Javascript和XML进行脚本编写的游戏引擎将更加用户友好并迎合更大的需求用户群(以及迄今为止没有机会使用他们的技能进行游戏的用户群)比使用Lua的用户群(并且周围有很多人!).
另外为了记录,我会在这个上使用V8,主要是因为我喜欢它的C++风格.
Ste*_*ken 17
Mozilla的SpiderMonkey非常简单且记录完备.它是一个C API,但它很容易用C++包装.它可以被编译为线程安全的,这对游戏很有用,因为你可能想要在一个线程中使用主逻辑,在第二个线程中使用用户界面逻辑.
谷歌的V8可能是一个不错的选择,因为你使用的是C++,但我还没有使用它的经验.根据文档(感谢Daniel James),V8不是线程安全的,虽然这可能会在未来发生变化.
还有WebKit的SquirrelFish,但在我之前看时,我找不到它的独立版本.
pos*_*ist 16
我已经尝试过SpiderMonkey和V8.使用SpiderMonkey,我无法获得任何工作.我甚至无法在mozilla.org上获得编译的示例.
V8开箱即用,我得到了一些基本的C++ < - > Javascript交互很快.对于使用V8的人来说,有一些谷歌列表,我发现我的大部分问题都已在那里得到解答.
我相信v8目前仅适用于x86,x64和arm处理器.这可能是一个缺点.
关于线程安全,来自include/v8.h:
* Multiple threads in V8 are allowed, but only one thread at a time
* is allowed to use V8. The definition of 'using V8' includes
* accessing handles or holding onto object pointers obtained from V8
* handles. It is up to the user of V8 to ensure (perhaps with
* locking) that this constraint is not violated.
Run Code Online (Sandbox Code Playgroud)
您可以在源文件中阅读更多内容(它看起来像doxygen文档,但它们似乎没有把它放在任何地方).
更新:该评论已被删除,可能是前一段时间.看起来v8现在有一个Isolate代表引擎实例的对象.单个Isolate实例一次只能在一个线程中使用,但其他Isolate实例可以同时在其他线程中使用.
在谈到脚本引擎和c ++时,你也可以考虑使用chaiscript.它接近ecma脚本(~Javascript)并且很容易嵌入到c ++中.
来自网页的卖家:
...另一方面,ChaiScript是从头开始设计的,并考虑到了与C++的集成.... ChaiScript没有元编译器,没有库依赖,没有构建系统要求,也没有任何遗留的包袱.可以与您公开的任何C++函数无缝协作.它不必明确告知任何类型,它是以功能为中心的.
使用ChaiScript,您可以通过向程序添加三行代码而不是修改构建步骤来开始编写应用程序脚本.
| 归档时间: |
|
| 查看次数: |
46032 次 |
| 最近记录: |