Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.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共享库API(in.so lib)_Javascript_C_Angularjs_Node.js_Jsctypes - Fatal编程技术网

从JavaScript调用C共享库API(in.so lib)

从JavaScript调用C共享库API(in.so lib),javascript,c,angularjs,node.js,jsctypes,Javascript,C,Angularjs,Node.js,Jsctypes,我有一个带有一些API的自定义C共享库(.so lib)。我想从AngularJS(或JS)调用这些API。我的限制是,我不应该使用任何其他编译器重新编译共享库代码,而是直接使用.so文件。鉴于这样做的选择有限,我尝试使用一些,并计划使用其他一些,但没有一个是令人满意的,即他们要求我的共享库代码用他们自己的编译器重新编译。我的UI应用程序是一个Chrome应用程序 Emscripten可以工作,但需要使用emcc编译器编译my.so lib。因此没有用 使用Google PNaCl,它还需要使用

我有一个带有一些API的自定义C共享库(.so lib)。我想从AngularJS(或JS)调用这些API。我的限制是,我不应该使用任何其他编译器重新编译共享库代码,而是直接使用.so文件。鉴于这样做的选择有限,我尝试使用一些,并计划使用其他一些,但没有一个是令人满意的,即他们要求我的共享库代码用他们自己的编译器重新编译。我的UI应用程序是一个Chrome应用程序

  • Emscripten可以工作,但需要使用emcc编译器编译my.so lib。因此没有用
  • 使用Google PNaCl,它还需要使用自己的SDK编译my.so lib
  • 使用Node js并直接使用Node gyp从.so库调用C API
  • 使用js ctypes并尝试直接从js代码调用C API
  • 我知道前两个不适合我。对于第三个和第四个,我不确定它们是否在没有使用自己的编译器或SDK重新编译库代码的情况下工作。
    您是否可以分享一些您的专业知识,了解这是否可行,或者是否有其他方法可以做到?

    此问题通过node ffi library解决。我们可以使用节点ffi从共享库调用C API。

    你说的Chrome应用程序是什么意思?-是extension?Chrome应用程序与extension不同。它与浏览器分离,在单独的窗口中像桌面应用程序一样运行,还有其他区别。但我关心的是C API调用部分。你看到了吗?重要提示:Chrome将取消对Windows、Mac和Linux上Chrome应用程序的支持。我已经看到了,但我的工作是一个实验性的想法,同样的代码库也用于web和移动应用程序,所以我只想测试我的想法,这是我长期以来一直在努力解决的一个问题。