2017-08-07 192 views
0

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

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。

+0

至今为止难过的答案 – Nik

回答

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/

我希望这帮助。

干杯。