VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 526|回复: 6

[分享] Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

[复制链接]
001
81_avatar_middle
最佳答案
1 
在线会员 发表于 2020-1-29 12:50:25 | 显示全部楼层 |阅读模式
本帖最后由 dark-f 于 2020-1-29 13:00 编辑

新年在山东亲戚家过,由于武汉的疫情,大家都被关在家中,先祝各位网友新年快乐!正值这闲暇,就搞搞SpiderMonkey45的应用,正好再检验一下年前刚发的帖子:
Win10_X64系统编译SpiderMonkey的mozjs-45.0.2版本经历

里面build的SpiderMonkey到底能否使用。

实际上,本坛的firefox大侠早在2015年就写过SpiderMonkey在windows的vs2010上的应用了,即:《VS2010 编译 SpiderMonkey 1.8.5 静态库版本》

此贴链接:VS2010 编译 SpiderMonkey 1.8.5 静态库版本

另外,本坛的liehuo大侠,在本坛发表了一系列的spidermonkey应用编程的帖子,第一帖是“SpiderMonkey_31.2.0版编程笔记 一”
地址:SpiderMonkey_31.2.0版编程笔记 一

都说到了编程时遇到的困难与解决方法,这些都是本人学习的良好资源,对于他们的奉献,本人受惠良多,借此帖多谢他们!正是有他们的存在,本坛才熠熠生辉!


这次为了检验mozjs-45的编译结果,本人也来应用一次,并记录下来,也就成为了此贴。

由于45版编译是在vs2015平台上进行的,因此,我也就直接使用vs2015来做应用了。

打开vs2015,选择new project,建立一个test的项目吧。就选其他语言、C++、win32、win32 console application,然后就选console application吧。

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

在项目目录里建立2个文件夹分别是lib和include。把mozjs-45版本编译好的那个dist目录里的include文件夹内的东西都搬到现在的这个include里。

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

我在lib文件夹内再建了debug和release两个文件夹,分别把build时的debug和release版本的内容搬过来,下图是release版本的内容。

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

要运行的例子,就用官网中的例子:https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey/How_to_embed_the_JavaScript_engine
How to embed the JavaScript engine

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

在项目的属性中,设置好链接库。我打算使用的是静态库js_static.lib,把它放到项目属性的link->input->additional dependencies中

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

编译后出现c4996错误

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

到网上查查看是什么类型的错误,果然有很多文章说到这样的问题,下面是博主;井底之蛙 在C4996:#("The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name:")
博文地址:https://blog.csdn.net/heimabuhei/article/details/79976270

在c/c++的预处理器中添加“_CRT_NONSTDC_NO_DEPRECATE”和“_CRT_SECURE_NO_WARNINGS”即可。
将这两项添加进去

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

再编译,这个错误没有了,但是出现LNK2001错误

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

很显然,这种错误一看就明白是库的连接出现问题了,库中找不到函数。那说明前面使用js_static.lib不正确,那就换成动态库看看。将静态库换成动态库

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

这时再编译,果然过关,编译成功(记得把build时的下图中的那些dll文件都拷贝到test文件所在的目录里,运行时需要)。

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

现在来检验一下吧。打开windows的run->cmd,切换到test所在目录,运行结果正确。

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

初次验证,基本还算顺利,小小经历,希望有朋友喜欢!再次祝各位网友新年快乐!




评分

参与人数 3威望 +3 驿站币 +6 热心值 +6 收起 理由
58_avatar_small thzzl + 2 + 2 很给力!
82_avatar_small love_cctry + 1 + 1 感谢分享!
01_avatar_small admin + 3 + 3 + 3 很给力!

查看全部评分





上一篇:新春防范肺炎!
下一篇:Win10_vs2013嵌入SpiderMonkey45静态库(js_static.lib)的程序编译过程
01_avatar_middle
最佳答案
38 
online_admins 发表于 2020-1-29 13:14:37 | 显示全部楼层
看来楼主是把 SpiderMonkey 研究的滚瓜烂熟了,支持!
82_avatar_middle
最佳答案
14 
在线会员 发表于 2020-1-29 13:51:23 | 显示全部楼层
SpiderMonkey 是好东西,支持一下
58_avatar_middle
最佳答案
43 
online_vip 发表于 2020-1-29 14:57:29 | 显示全部楼层
谢谢楼主分享!
81_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-1-29 15:12:12 | 显示全部楼层
多谢管理员加精,多谢各位支持!

我对spidermonkey的了解,源于我玩d2(暗黑破坏神2)游戏,这个的当前能用的2个bot都与其有关。这两个bot一个是韩国人搞的D2NT,另外一个是D2BS,它们使用的JS引擎都是SpiderMonkey。只是D2NT的源代码没有公开,大约在d2 1.13c版本后创始人丢弃不再更新了,现在韩国一班爱好者在内核的外围修修补补,至今能用于1.14d的d2版本,也是采用降版的方法。另外一个D2BS是源码公开的,其使用SpiderMonkey内核引擎,我估计当初取名D2BS这个BS可能都与spidermonkey有关。可惜的是,SpiderMonkey变化太快,而且没有注意继承关系,常常是下一个版本就把上一个版本的内容全盘否定了,使得很多利用他们引擎的,也变得不敢应用或者更新。像D2BS使用的还是1.8几的版本,估计新版本变化太多了,要全部更新得全部重来,这个代价太大了。

这几天看网络上使用SpiderMonkey的,还有很多,特别是腾讯游戏他们搞网游的,都是使用spidermonkey,这里有一个重要的手游平台:Cocos,其与spidermonkey结合,催生了基于js的手游
Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

另外,像开源游戏:O.A.D,也是使用的SpiderMonkey

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

这是wildfire games的O.A.D的源代码截图

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

从这些可知,spidermonkey引擎应用还是很广的,值得学习呀
81_avatar_middle
最佳答案
1 
ico_lz  楼主| 发表于 2020-1-29 17:35:29 | 显示全部楼层
多谢管理员给本帖加精华,谢谢楼上各位的支持与鼓励!

实际上,我学习spidermonkey是源于一款游戏,那就是暗黑破坏神2(diablo II),可能很多人都玩过,应该是暴雪的经典游戏了,自2000年发行以来,至今20年,仍然有一批fans,这个游戏与spidermonkey的关系是在于它的2款bot:D2NT-bot和D2BS-bot。

D2NT-bot是由韩国人kim所写,但他在1.13c版本的d2之后就停止更新了,而且源码至今没有公开。但,现在有一大批韩国人在维持这个bot,他们采用降版的欺骗方式,使得在1.13c内核基础上的D2NT仍然能够在1.14d的版本上运行,所以,至今亚服战网上韩国人主要是跑这个bot。

另外一个D2BS-bot,最先可能是有lord2008和一批人搞的,然后Noah和kolton等人在1.13d后重新编写了控制程序与js脚本,所以,这款bot现在全称应该是d2bot#+D2BS+kolton,其中js脚本主要由kolton编写,因此这款bot也简称kolbot。这款bot的除d2bot#这个控制程序外,源代码都是公开的。我在本坛发的第一个帖子:
vs调试时设置的断点变成空心圆,求解决之道

里面编译的程序就是D2BS。

上面两款bot使用的js引擎都是spidermonkey。

另外,现在的手游开发平台cocos2d-js中的js引擎就是spidermonkey

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

还有野火游戏(wildfire games),其开源游戏O.A.D,也是采用的该引擎

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

Win10 X64系统利用vs2015编写SpiderMonkey45的win32应用程序

可知这个引擎还是应用很广泛的
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-21 05:00

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表