问题标签 [embind]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
48 浏览

c++ - Emscripten:创建包装器以允许子类时出现“分配抽象类类型的对象”错误

考虑以下人为设计的示例:

如果我尝试编译此代码,则会收到错误消息,因为我正在尝试“分配抽象类类型的对象IBar”。

显然IBar是抽象的,但这无关紧要,因为execute它引用了一个IBar对象。似乎出于某种未知原因emscripten::call试图实例化。IBar

在我的实际代码中,我无法更改IFoo::execute.

有谁知道这个问题的解决方法?

0 投票
0 回答
47 浏览

c++ - Emscripten:如何在 JavaScript(TypeScript)中创建/使用 std::unique_ptr?

我有一些 C++ 代码需要一个std::unique_ptr. 我需要从 TypeScript 调用此代码。

Emscripten 内置了对 的支持std::shared_ptr,但我不知道如何创建一个std::unique_ptr对象,在这种情况下是Foo. 这是Foo.

这是我在 TypeScript 中所做的:

这会导致UnboundTypeError: Cannot call Bar.qux due to unbound types: NSt3__210unique_ptrIN74FooENS_14default_deleteIS2_EEEE错误。

问题

  1. 有谁知道如何创建一个唯一的指针Foo
  2. 有谁知道如何绑定唯一指针?
  3. 有谁知道smart_ptr_trait实际上是做什么的?根据它的文档,我认为它可以让我注册唯一指针。情况似乎并非如此。
0 投票
1 回答
66 浏览

javascript - 如何为接受`std::function &&`的函数创建绑定(Emscripten)?

我有一个以 astd::function作为参数的函数:

我想创建一个实现 Foo 的 JS 包装器。

但是,当我尝试bar从 JavaScript (TypeScript) 调用时,我得到一个BindingError.

BindingError: parameter 1 has unknown type NSt3__28functionIFvvEEE

有谁知道如何绑定 astd::function以便我可以将 JavaScript lambda 函数传递给它?

0 投票
0 回答
42 浏览

c++ - Emscripten:在 JavaScript 中从 C++ 实现可变参数模板类

想象一下,我在 C++ 中有以下可变参数类:

我想在 JavaScript 中实现这个类。为此,我必须创建一个包装器。

这会导致错误:

我可以通过传入一个具体类型来解决这个问题,而不是FooWrapper作为一个模板。

但这需要我为实例化的每个可能值创建一个新结构IFoo

有没有人有更好的方法来做到这一点?

0 投票
0 回答
40 浏览

javascript - Emscripten 在对象中嵌入命名空间方法

我一直在尝试使用 Emscripten 将 C++ API 引入 Web 程序集。

我已经成功地能够将单个函数和类从我的 API 导出到 JS 模块,但我不太确定如何将方法的完整命名空间嵌入到它们自己的 JS 对象中。

假设我有NamespaceANamespaceB(下面的粗略示例),我如何将这些命名空间中的方法“嵌入”到主绑定中它们自己的 JS 对象?

我在 Javascript 中寻找如下使用结构:

我将如何实现这一目标?

我尝试导出 avalue_object但似乎我无法将命名空间用作类型。即便如此,我认为尝试将函数导出为字段是不正确的:

0 投票
0 回答
38 浏览

javascript - 使用 emscripten 和 embind 将 C++ 类绑定到 javascript 的正确方法是什么

我目前正在尝试将 C++ 类及其方法(最终,多种方法,但目前一个不起作用)绑定到 javascript。为了清楚起见,我目前正在使用单独的 interface.cpp 文件来处理所有 C++ 绑定。这就是文件的样子。

board.h 是一个包含 Board 类以及相关方法的头文件。我正在尝试使用以下命令编译我的项目: emcc --bind src/* -I include -I ../emsk/emsdk/upstream/include/ src/* 只包含我所有的 .cpp 源文件,并且 include/ 包含我所有的头文件。当我运行它时,我收到此错误:

我不确定问题是什么,因为我正在关注几乎完全将 C++ 类链接到 javascript 的 embind 文档。我玩过很多不同的版本,似乎没有什么能够执行这个类+方法绑定。任何帮助,将不胜感激!