我正在尝试使用 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/