首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpiderMonkey编译错误

SpiderMonkey编译错误
EN

Stack Overflow用户
提问于 2014-09-25 01:21:31
回答 1查看 464关注 0票数 1

我刚刚安装了最新版本的SpiderMonkey,并且正在尝试运行用于嵌入JS引擎的示例"Hello World“程序。示例程序如下所示:

代码语言:javascript
复制
    #include "jsapi.h"

/* The class of the global object. */
static JSClass global_class = {
    "global", 
    JSCLASS_GLOBAL_FLAGS,
    JS_PropertyStub, 
    JS_DeletePropertyStub, 
    JS_PropertyStub, 
    JS_StrictPropertyStub,
    JS_EnumerateStub,  
    JS_ResolveStub, 
    JS_ConvertStub
};


int main(int argc, const char *argv[])
{
      JS_Init();

    JSRuntime *rt = JS_NewRuntime(8L * 1024 * 1024, JS_NO_HELPER_THREADS);
    if (!rt)
        return 1;

    JSContext *cx = JS_NewContext(rt, 8192);
    if (!cx)
        return 1;

    JS::RootedObject global(cx, JS_NewGlobalObject(cx, &global_class, nullptr, JS::DontFireOnNewGlobalHook));
    if (!global)
        return 1;

    JS::Value rval;
    bool ok;
    {
      JSAutoCompartment ac(cx, *global); 
      JS_InitStandardClasses(cx, *global);

      const char *script = "'hello'+'world, it is '+new Date()";
      const char *filename = "noname";
      int lineno = 0;
      ok = JS_EvaluateScript(cx, *global, script, strlen(script), filename, lineno, &rval);
      if (rval.isNull() | rval.isFalse() )
        return 1;
    }

    JSString *str = rval.toString();
    printf("%s\n", JS_EncodeString(cx, str));

    JS_DestroyContext(cx);
    JS_DestroyRuntime(rt);
    JS_ShutDown();
    return 0;
}

然而,我得到了以下错误(当我在终端上使用g++编译时):

代码语言:javascript
复制
js/src/helloworld.cpp:21:53: error: use of undeclared identifier 'JS_NO_HELPER_THREADS'
js/src/helloworld.cpp:36:25: error: no matching constructor for initialization of 'JSAutoCompartment'
js/src/helloworld.cpp:37:7: error: no matching function for call to 'JS_InitStandardClasses'
js/src/helloworld.cpp:42:12: error: no matching function for call to 'JS_EvaluateScript'

有人能告诉我我哪里做错了吗?

EN

回答 1

Stack Overflow用户

发布于 2015-10-30 21:24:10

可能你在编译的时候没有给出包含路径和库路径。

你应该这样编译:

-I/home/pi/mozjs-24.2.0/js/src/build_OPT.OBJ/dist/include -L/home/pi/mozjs-24.2.0/js/src/build_OPT.OBJ/dist/lib/

g++ -std=c++11 HelloWorld.cpp -o Helloworld -lmozjs-24 -lz -lpthread -ldl

其中HelloWorld是您的文件的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26022848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档