我需要从javascript调用c ++函数。有可能吗?

时间:2015-05-07 12:32:47

标签: javascript c++ web

有c ++库,我需要从客户端浏览器上运行的JavaScript对这个库进行函数调用,该库只驻留在客户端机器上。如何加载库并访问c ++库提供的接口(函数)?该库主要包含算法和渲染调用。

3 个答案:

答案 0 :(得分:2)

你最好不要创造一个' C' C ++库的包装器,并从Javascript调用它。

由于语言标准缺乏严格的ABI定义,因此很难与C ++接口。 C没有这个限制。出于这个原因,' C'当你想要两种编程语言相互交流时,最终成为通用语言。

答案 1 :(得分:2)

我能想到的一些选择:

1)在JavaScript中查找其他库。

2)将C ++代码移植到JavaScript。这有多容易取决于 C ++代码有多复杂或需要多少。

3)将C ++代码包装在服务器上的Web服务中,并使用AJAX调用它。我并不熟悉任何C ++ Web服务框架,但除此之外,您可以为库创建JavaPython.NET绑定(或者只为您创建的部分)需要),或用另一种语言绑定。然后,您可以用您选择的任何语言编写Web服务。

3B)#3的替代方案 - 如果库有命令行界面,或者存在使用该库的命令行程序,那么您的Web服务可以调用它,您不必编写语言捆绑。但请注意,有性能和使用此选项时需要注意的安全问题。

4)如果你有库的C ++源代码,你可以尝试使用Emscripten将库编译为JavaScript。

我可能会按顺序尝试那些。我可能会尝试#3,因为它可能是最棘手的。

另外,如果您执行#3或#3B,则需要确保您对库的使用是线程安全的。

免责声明:除了#3B,我从未尝试过其中任何一项。

答案 2 :(得分:0)

Yes its possible but before you can call them from javascript. You do this by creating an interface file to tell javascript about the interface.