从 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 应用程序。
- Emscripten 可以工作,但需要使用 emcc 编译器编译我的 .so 库。因此没有用。
- 使用 Google PNaCl,它也需要我的 .so 库用它自己的 SDK 编译。
- 使用 Node js 并使用 node-gyp 直接从 .so 库调用 C API。
- 使用 js-ctypes 并尝试直接从 JS 代码调用 C API。
我知道前两个对我不起作用。对于第三个和第四个,我不确定它们是否可以在不使用自己的编译器或 SDK 重新编译库代码的情况下工作。
您能否分享一些您的专业知识,看看这是否可行,或者是否有其他方法可以做到?
问题已通过 node-ffi 库解决。我们可以使用 node-ffi 从共享库中调用 C API。
我有一个带有一些 API 的自定义 C 共享库 (.so lib)。我想从 AngularJS(或 JS)调用这些 API。我的约束是我不应该使用任何其他编译器重新编译共享库代码,而是直接使用 .so 文件。考虑到这样做的选项有限,我尝试使用一些并计划使用其他一些,但 none 是令人满意的,即他们需要我的共享库代码用他们自己的编译器重新编译。我的 UI 应用程序是 Chrome 应用程序。
- Emscripten 可以工作,但需要使用 emcc 编译器编译我的 .so 库。因此没有用。
- 使用 Google PNaCl,它也需要我的 .so 库用它自己的 SDK 编译。
- 使用 Node js 并使用 node-gyp 直接从 .so 库调用 C API。
- 使用 js-ctypes 并尝试直接从 JS 代码调用 C API。
我知道前两个对我不起作用。对于第三个和第四个,我不确定它们是否可以在不使用自己的编译器或 SDK 重新编译库代码的情况下工作。 您能否分享一些您的专业知识,看看这是否可行,或者是否有其他方法可以做到?
问题已通过 node-ffi 库解决。我们可以使用 node-ffi 从共享库中调用 C API。