JavaScriptCore Hello world nightly

时间:2017-08-07 17:51:16

标签: javascript c++ linux macos javascriptcore

我正在尝试使用JavaScriptCore C API开发一个简单的cli工具示例(在我的linux机器中使用,或者如果不能在mac osx中使用它)。参数是JavaScript代码段。

    JSGlobalContextRef ctx;
    JSStringRef script;
    bool isOk;
    JSValueRef result;
    char *js;
    ctx = JSGlobalContextCreate(NULL);
    script = JSStringCreateWithUTF8CString("myscript");
    isOk = JSCheckScriptSyntax(ctx, script, NULL, 1, NULL);
    result = JSEvaluateScript(ctx, script, NULL, NULL, 1, NULL);
    JSStringRelease(script);
    JSGarbageCollect(ctx);
    JSGlobalContextRelease(ctx);

应该是这样的(只是一个例子,如果你有更好的例子,我很欣赏),我只是在执行stdout后编写JS输出。我也希望链接反对每晚构建,但总是我做了一个构建链接对我的系统JavaScriptCore.framework。

1 个答案:

答案 0 :(得分:0)

我刚开始使用JavascriptCore C API,这是我的HelloWorld代码:

JSGlobalContextRef context = JSGlobalContextCreate(0);
JSValueRef exception;
JSStringRef code = JSStringCreateWithUTF8CString("function helloWorld() { return 1+1; } helloWorld();");
JSStringRef file = JSStringCreateWithUTF8CString("");
JSValueRef  value = JSEvaluateScript(context, code, /* thisObject*/ 0, file, 1, &exception);
bool assert = JSValueIsNumber(context, value);
int number = (int)JSValueToNumber(context, value, NULL);
printf("Value: %d\n", number);

我发现这篇文章帮助我用Javascript绑定本机对象。

https://karhm.com/JavaScriptCore_C_API/

我希望这有帮助。

干杯。