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;
}
相关库文件下载: 点击打开链接