Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.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
从javascript访问本机c函数_Javascript_C_Webkit_Java Native Interface - Fatal编程技术网

从javascript访问本机c函数

从javascript访问本机c函数,javascript,c,webkit,java-native-interface,Javascript,C,Webkit,Java Native Interface,我有一个javascript应用程序,它将在嵌入式平台上运行。它必须调用一些已经在平台中实现的c API。这是一个专有应用程序,只能在选定的设备上运行。 我正在webkit上运行此应用程序。没有可用的JVM。 我正在考虑一些选择,并得到了一些。我想知道其中是否有适用的或更好的选择。我是javascript新手,所以我的想法可能不正确 类似于JNI的东西(如果存在的话) 为webkit开发一个插件,该插件向应用程序公开一些Javascript API,然后调用本机c函数 修改webkit 你的第二

我有一个javascript应用程序,它将在嵌入式平台上运行。它必须调用一些已经在平台中实现的c API。这是一个专有应用程序,只能在选定的设备上运行。
我正在webkit上运行此应用程序。没有可用的JVM。
我正在考虑一些选择,并得到了一些。我想知道其中是否有适用的或更好的选择。我是javascript新手,所以我的想法可能不正确

  • 类似于JNI的东西(如果存在的话)

  • 为webkit开发一个插件,该插件向应用程序公开一些Javascript API,然后调用本机c函数

  • 修改webkit


  • 你的第二个建议非常接近你需要做的。编译浏览器时(不需要自己编译webkit),可以注册函数和对象

    如果您使用的是Qt,那么您可能应该开始


    如果您使用的是GTK,那么注册就不同了,这是一个很好的例子。

    您可能希望探索的一种方法是脚本警报处理程序。我知道WebKitGTK支持它

    您可以在webview上设置简单的javascript警报,在另一端解析参数,然后调用所需的函数。当然,如果您有复杂的参数(例如对象),无法轻松转换为字符串,那么这种方法将很难实现


    唯一的问题是,我不知道您的平台是否支持此功能,因为您没有提到平台,所以我无法检查

    不会使用QT方法限制平台(我知道chrome不支持QT)。像NPAPI这样的东西是更好的选择吗?@jogabonito-QT是一个框架。chrome不使用它的事实不会改变它。正如我在回答中提到的,我给出的解决方案只有在构建浏览器时才有意义。