问题标签 [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.
c++ - Emscripten:创建包装器以允许子类时出现“分配抽象类类型的对象”错误
考虑以下人为设计的示例:
如果我尝试编译此代码,则会收到错误消息,因为我正在尝试“分配抽象类类型的对象IBar
”。
显然IBar
是抽象的,但这无关紧要,因为execute
它引用了一个IBar
对象。似乎出于某种未知原因emscripten::call
试图实例化。IBar
在我的实际代码中,我无法更改IFoo::execute
.
有谁知道这个问题的解决方法?
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
错误。
问题
- 有谁知道如何创建一个唯一的指针
Foo
? - 有谁知道如何绑定唯一指针?
- 有谁知道
smart_ptr_trait
实际上是做什么的?根据它的文档,我认为它可以让我注册唯一指针。情况似乎并非如此。
javascript - 如何为接受`std::function &&`的函数创建绑定(Emscripten)?
我有一个以 astd::function
作为参数的函数:
我想创建一个实现 Foo 的 JS 包装器。
但是,当我尝试bar
从 JavaScript (TypeScript) 调用时,我得到一个BindingError
.
BindingError: parameter 1 has unknown type NSt3__28functionIFvvEEE
有谁知道如何绑定 astd::function
以便我可以将 JavaScript lambda 函数传递给它?
c++ - Emscripten:在 JavaScript 中从 C++ 实现可变参数模板类
想象一下,我在 C++ 中有以下可变参数类:
我想在 JavaScript 中实现这个类。为此,我必须创建一个包装器。
这会导致错误:
我可以通过传入一个具体类型来解决这个问题,而不是FooWrapper
作为一个模板。
但这需要我为实例化的每个可能值创建一个新结构IFoo
。
有没有人有更好的方法来做到这一点?
javascript - Emscripten 在对象中嵌入命名空间方法
我一直在尝试使用 Emscripten 将 C++ API 引入 Web 程序集。
我已经成功地能够将单个函数和类从我的 API 导出到 JS 模块,但我不太确定如何将方法的完整命名空间嵌入到它们自己的 JS 对象中。
假设我有NamespaceA
和NamespaceB
(下面的粗略示例),我如何将这些命名空间中的方法“嵌入”到主绑定中它们自己的 JS 对象?
我在 Javascript 中寻找如下使用结构:
我将如何实现这一目标?
我尝试导出 avalue_object
但似乎我无法将命名空间用作类型。即便如此,我认为尝试将函数导出为字段是不正确的:
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 文档。我玩过很多不同的版本,似乎没有什么能够执行这个类+方法绑定。任何帮助,将不胜感激!