[英]How to use c/c++ library with Javascript?
我有一个来自第三方的 SDK。 我没有源代码,只有头文件、dll 和 lib 文件。 此 SDK 提供 C API 以通过 USB 与设备进行通信。 我想在 Javascript 中使用这个 SDK。
我搜索过这个主题,有几种方法。 然而,根据我的理解,他们每个人都有一些困难可以很容易地应用于我的情况:
欢迎任何想法/建议!
编辑 1:上下文是我想将数据从设备获取到浏览器或独立的 node-webkit 应用程序中。 类似于在浏览器中获取地理位置信息的用例。 一般来说,我不认为我的问题(在 JS 中使用 C++ 组件)是一个奇怪的想法。 例如,Mozilla 用 C++ 开发了许多 XPCOM 组件,然后用 XPConnect 包装,以便这些组件可以被 Firefox 中的 Javascript 或 XUL 项目使用。 但是这种方法是非常劳动密集型的,并且对 Mozilla 的工具链有太多的依赖。 Node js 看起来是一个很有前途的替代方案。 Node-webkit 本质上与 XUL 做同样的事情:帮助构建/运行基于浏览器的跨平台 GUI 应用程序。
为工作使用正确的工具。
无论如何,您的应用程序将仅适用于 Windows,因此请为此使用大量工具。
如果您想在 HTML/JavaScript 中构建 GUI,您仍然可以。 只需让您的应用程序成为您在其中编写 GUI 的 HTML 元素的包装器。这样 GUI 就是 HTML,但应用程序的其余部分可以本机与您的 .dll 对话。 这将为您和您的用户提供良好的体验。
如果您将浏览器带入其中,您只会感到痛苦。 所有浏览器都在积极努力使您想要的成为不可能。 对于浏览器制造商来说,加载本机代码意味着安全性、稳定性和兼容性问题。
唯一的另一种干净的方法是将您的应用程序编写为一种 SaaS 应用程序。 即分为两部分,一个作为本地 Windows 应用程序编写的服务器组件,它加载 .dll 并提供一个 HTTP 服务器,为您的 HTML+JS GUI 组件提供服务。 这种方法是否有意义取决于您的应用程序的用途。 如果期望在一台机器上全部使用它,那么这会给您的用户增加不必要的痛苦。 如果将 .dll 加载到一台机器上然后远程访问它是有意义的,无论是在另一台计算机还是移动应用程序上,那么它可能是有意义的。 一些以这种方式工作的应用程序包括 SABnzbd、Plex 媒体服务器、传输具有这种模式、任何旨在在 NAS 上运行的应用程序等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.