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

Call C shared library API (in .so lib) from JavaScript

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

  1. Emscripten 可以工作,但需要使用 emcc 编译器编译我的 .so 库。因此没有用。
  2. 使用 Google PNaCl,它也需要我的 .so 库用它自己的 SDK 编译。
  3. 使用 Node js 并使用 node-gyp 直接从 .so 库调用 C API。
  4. 使用 js-ctypes 并尝试直接从 JS 代码调用 C API。

我知道前两个对我不起作用。对于第三个和第四个,我不确定它们是否可以在不使用自己的编译器或 SDK 重新编译库代码的情况下工作。 您能否分享一些您的专业知识,看看这是否可行,或者是否有其他方法可以做到?

问题已通过 node-ffi 库解决。我们可以使用 node-ffi 从共享库中调用 C API。