JavaScriptCore Hello world 每晚

标签 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);

应该是这样的(只是一个例子,如果你有更好的例子我很欣赏),我只是将执行后的 JS 输出写到标准输出。我也想链接每晚构建,但我总是针对我的系统 JavaScriptCore.framework 构建链接。

最佳答案

我刚开始使用 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);

我发现这篇文章可以帮助我将 native 对象与 Javascript 绑定(bind)。​​

https://karhm.com/JavaScriptCore_C_API/

希望对您有所帮助。

干杯。

关于JavaScriptCore Hello world 每晚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45552870/

相关文章:

linux - 如何递归删除目录中所有文件中的插入符号(^)字符?

javascript - 通过js使标签可点击URL

C++ 链表指针指向结构崩溃

c++ - 在 C++ 中移动 vector 的值

c++ - Qt 并发与信号和槽

linux - .bashrc .bash_profile 和/etc/profile 的区别、用途和相同点

linux - centos cpu使用率很高,但是找不到进程

javascript - 跟踪 ReactJS 应用程序

javascript - GraphQL 无法解析嵌套对象属性

javascript - native 页面转换 + phonegap + cordova