C++调用SpiderMonkey封装类库运行JS函数

JsMgr是基于SpiderMonkey引擎的相关接口开发封装的,本身SpiderMonkey引擎提供的相关接口与操作都是使用他内部的一套机制,在我们平时的VC开发中不是很方便,于是这里自己封装了一套接口供大家使用。

JsMgr这套库的封装是由VC驿站的Syc老师完成的,同时VC驿站也是一个很不错的学习网站,这里附上其连接:点击打开链接


下面说说编程时JsMgr库的使用步骤,其中的相关路径以自己程序为准:

   1、添加.h头文件和.lib库文件:
      #include "..\\JsManager.h\\JsManager.h"
      #pragma comment(lib,"..\\JsMgrSharedLib.lib\\JsMgrSharedLib.lib")
   2、在项目---属性---C/C++---常规中Include目录:../js185_shared/include
   3、在 *.exe所在同级文件夹添加两个动态链接库:JsMgrSharedLib.dll、mozjs185-1.0.dll


以控制台程序为例,测试代码如下:

#include "stdafx.h"
#include "..\\JsManager.h\\JsManager.h"
#pragma comment(lib,"..\\JsMgrSharedLib.lib\\JsMgrSharedLib.lib")

int _tmain(int argc, _TCHAR* argv[])
{
	CJsManager JsMgr;
	BOOL bRet = JsMgr.initGlobalContext();
	jsval retVal; 

	//(1)  运行一个字符串
	//LPCTSTR script = _T("(function(){return \"This string from js.xxx.\";})();");//执行一个JavaScipt函数
	//bRet = JsMgr.runScriptString(script,retVal);


	//(2)  加载文件可以自动运行函数
												/*(function () {
													return "aaaaaaaaaaaaaaaaaaaaaa";
												})();*/

	//bRet = JsMgr.runScriptFile(_T("D:\\JsSpiderMonkeyTest\\test.js"),retVal);//文件加载之后会自动运行


	//(3)  加载文件,文件中的函数不能自动运行,有参数时传参数,没参数时取NULL
	//无参数
	//bRet = JsMgr.runScriptFile(_T("D:\\JsSpiderMonkeyTest\\test2.js"),retVal);//加载js文件
	//bRet = JsMgr.evalFunction(_T("getJsString"),NULL,retVal);
	//有参数
	//CJsArray paramArray(&JsMgr);
	//paramArray.pushElement(3);
	//paramArray.pushElement(5);
	//bRet = JsMgr.runScriptFile(_T("D:\\JsSpiderMonkeyTest\\test2.js"),retVal);//加载js文件
	//bRet = JsMgr.evalFunction(_T("Add"),¶mArray,retVal);

	//(4)
	//CJsArray paramArray(&JsMgr);
	//paramArray.pushElement(3);
	//paramArray.pushElement(5);
	//bRet = JsMgr.runScriptFile(_T("D:\\JsSpiderMonkeyTest\\test3.js"),retVal);//加载js文件
	//bRet = JsMgr.evalObjFunction(_T("obj.Func"),_T("sub"),¶mArray,retVal);


	char *pResult = NULL;
	bRet = JsMgr.jsval_to_cstring(retVal, &pResult);
	printf("Result = %s\n\n", pResult);
	return 0;
}

相关库文件下载: 点击打开链接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小米的修行之路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值