javascript - 浏览器该如何调用c或者c++
迷茫
迷茫 2017-04-10 17:59:44
[JavaScript讨论组]

在做一个图像识别的项目, 需要通过浏览器去调用同事写的识别算法, 不用说你们也知道, 肯定是底层的, c或c++的.

浏览器直接调用c肯定不现实, 这个我清楚. 但是绕个弯, node.js是可以调用c, 这样只要通过本地启用nodejs服务或者用nw.js封装web就可以把锅甩给nodejs.

根据我目前掌握的信息来看, node.js可以调用c但也不是随意调用, 需要重写c, 使之成为nodejs的c扩展.类似于这个样子:

Handle Method(const Arguments& args) {
  //code here
}

这样就比较尴尬了, 我所需要调用的库较为庞大, 重写起来也不是件容易的事,
而且, 我也写不了c啊 (〒︿〒).

我该如何去解决这个问题呢?

或许

  1. 一定是我走的方向不对, 不应该拿浏览器调用c, 但如何通过

  2. 有什么黑科技能将c转成js

  3. 只需要重写c的接口就可以解决

老司机带带我~ 囧rz

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(7)
高洛峰

如果你要客户端调用,只能写浏览器插件。IE用ActiveX,火狐用NPAPI。Chrome旧版本可以用NPAPI,45之后版本只能用PPAPI方式。js里可以直接调用。举个例子就是像Flash插件那样,Flash插件是C语言写的吧?
如果是服务器端调用,Java的话可以用JNI/JNA。PHP什么的有C扩展模块。

巴扎黑
  1. 将浏览器的那个图片上传到服务器

  2. 服务器上,不论是PHP,或者是Node,都可以有导入SO、DLL的方法,并且有执行系统exe、bin文件的方法

  3. 通过SO、DLL识别了之后,返回结果给客户端

你的同事应该生成一个dll/so/bin/exe文件让你调用。

黄舟

能否直接截屏保存或者把要处理的网页图片保存后作为输入数据传给图像模块?然后图像模块定期读取图片存储路径下图片即可

PHP中文网

嘿嘿,出个馊主意,IE的bho

PHPz

其实不用重写原来的库,只需要再写一个简单的库提供新的接口,内部用来调用你需要的接口,然后封装成支持nodejs调用的形式

高洛峰

ActiveX,或者服务端用nodejs调用,前端只做视频流上传的功能

怪我咯

大家给的建议基本都是可以实现的, 我后来翻了翻调用的第三方库, 发现它其实本身就是基于c编译的js, 用的Emscipten, 所以准备尝试一下, 这个应该是最最不破坏原有结构的做法了.

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号