【问题标题】:How to use Boost Library with Emscripten如何在 Emscripten 中使用 Boost 库
【发布时间】:2017-06-16 06:40:36
【问题描述】:

我有一个项目需要在浏览器中使用 websocket(或命名管道)与本机程序进行通信。 (通过Webassembly可行吗?)

我用 Boost Library 写了一个 c++ websocket,想把它编译成 wasm。

但我不知道如何将 Boost Lib(不仅仅是标题)与 Emscripten 一起使用。

我尝试通过以下方式构建 Boost Lib: Using Boost with Emscripten

但是,使用 Emscripten 编译项目时,我应该如何链接 lib?

谢谢!

【问题讨论】:

    标签: emscripten webassembly


    【解决方案1】:

    我认为您必须采用不同的解决方案才能将 websockets 与 wasm 一起使用。您可能想尝试在 javascript 中使用 websockets 并将其与您的 c++ 代码连接。

    另一个答案是关于如何做到这一点的例子:

    https://stackoverflow.com/a/44637040/3042747

    用于 c++/javascript 交互的 emscripten 文档:

    https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html

    【讨论】:

      【解决方案2】:

      昨天我认为你不能这样做,因为在浏览器中你限制了 使用浏览器 API。 而且我只知道 websocket。

      但今天我发现我不对 - 存在 WebRtc 数据通道,所以可能的 emscripten 库以某种方式实现了 C 'socket' API。

      恕我直言,这太难了。 为什么要使用可能功能有限的 socket 实现来实现 web socket 协议? 你已经在 javascript API 中有工作的 websocket 了!

      浏览器沙盒与外部世界的通信,可以调用 调用 websocket API 的 webassembly 程序 javasript 函数。

      google io codelab 中解释了如何编写不使用任何代码的 C 程序 C 库。在这种情况下,wasm 代码很小。

      请查看我的问题中的示例代码:How to call from webassembly websocket API?

      【讨论】:

      • Igor 有一个sugested edit。是你的账户吗?在这种情况下,请ask for merging your accounts,这样您就可以在未经批准的情况下编辑自己的帖子。
      • 感谢您的帮助!目的是对用户隐藏通信机制,以尽可能避免一些攻击。如果使用javascript实现websocket,代码是纯代码。(但是wasm是二进制代码)
      • 你好伊戈尔!您的编译中没有“Side_Module”标志,它会输出 Html & Js 文件。但是,为什么使用模块的风格看起来像 Side_Module?
      • 我真的不知道 emcc 标志 - 我从 google io codelab 获取命令行。 ;-) 欢迎将 cmets 添加到我的 websocket 示例中。模式 -s ONLY_MY_CODE=1 用于简化:我想要也可以在汇编代码中读取的小代码。
      • 对不起,我还没有权限在其他问题下添加cmets。 :-(
      猜你喜欢
      • 2013-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-15
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      相关资源
      最近更新 更多