Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/430.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScriptCore从C调用JavaScript函数?_Javascript_C_Function_Swig_Javascriptcore - Fatal编程技术网

如何使用JavaScriptCore从C调用JavaScript函数?

如何使用JavaScriptCore从C调用JavaScript函数?,javascript,c,function,swig,javascriptcore,Javascript,C,Function,Swig,Javascriptcore,我已经用JavaScript编写了一个函数。例如: 函数myName(a) { var k=10; 印刷品(k); } 是否可以使用JavaScriptCore从C调用myName?如果是这样,那么如何?< P>你可能想看看谷歌的V8项目(它是用C++编写的)。它允许您在C++程序中编译并执行JavaScript程序(借助于嵌入式V8引擎)。这是它的是的,你可以。一种方法是,从C调用JSEvaluateScript。大概是这样的: JSStringRef script = JSStringCr

我已经用JavaScript编写了一个函数。例如:

函数myName(a)
{
var k=10;
印刷品(k);
}

是否可以使用JavaScriptCore从C调用
myName
?如果是这样,那么如何?

< P>你可能想看看谷歌的V8项目(它是用C++编写的)。它允许您在C++程序中编译并执行JavaScript程序(借助于嵌入式V8引擎)。这是它的

是的,你可以。一种方法是,从C调用JSEvaluateScript。大概是这样的:

JSStringRef script = JSStringCreateWithUTF8CString("myName()");
JSEvaluateScript(ctx, script, NULL, NULL, 0, NULL);

这假设您已经使用JSGlobalContextCreate创建了ctx(一个JSContextRef),并且已经在该上下文中评估了您的脚本(再次使用JSEvaluateScript)以将myName函数添加到该ctx。

你好,谢谢您的建议,基本上我正在使用SWIG工具访问javascript中的所有c函数(它会创建对应于所有使用的API的包装函数)。有关我的目标的详细说明,请参考链接。我所有的API在公开后都工作正常。一个API“g_signal_connect”[我无法公开。如果您有任何调用此函数的想法,请提供帮助。我的包装函数如下所示:ulong JS_g_signal_connect](ClutterActor*actor,const char*eventName,char*calledFunction,gpointer data){return g_signal_connect(actor,eventName,GCallback(calledFunction),data)}我的函数“calledFunction”是在javascript中定义的。我从javascript语言调用我的包装函数。语法示例为.JS_g_signal_connect(actor,button press event,“functionName“,NULL);我不熟悉SWIG,但它似乎很有趣。我会看看我的业余时间。如果我能做些什么,我会留下帖子:-)