我目前正在尝试将 C++ 类及其方法(最终,多种方法,但目前一个不起作用)绑定到 javascript。为了清楚起见,我目前正在使用单独的 interface.cpp 文件来处理所有 C++ 绑定。这就是文件的样子。
#include <emscripten/bind.h>
#include "board.h"
using namespace emscripten;
EMSCRIPTEN_BINDINGS(my_module){
class_<Board>("Board")
.constructor()
.function("MakeMove", &Board::MakeMove);
}
board.h 是一个包含 Board 类以及相关方法的头文件。我正在尝试使用以下命令编译我的项目:
emcc --bind src/* -I include -I ../emsk/emsdk/upstream/include/
src/* 只包含我所有的 .cpp 源文件,并且 include/ 包含我所有的头文件。当我运行它时,我收到此错误:
emcc --bind src/* -I include -I ../emsk/emsdk/upstream/include/
src/interface.cpp:8:10: error: no matching member function for call to 'function'
.function("MakeMove", &Board::MakeMove);
~^~~~~~~~
/home/sethbassetti/emsk/emsdk/upstream/emscripten/cache/sysroot/include/emscripten/bind.h:1567:44: note: candidate template ignored: couldn't infer template argument 'Callable'
EMSCRIPTEN_ALWAYS_INLINE const class_& function(const char* methodName, Callable callable, Policies...) const {
^
1 error generated.
emcc: error: '/home/sethbassetti/emsk/emsdk/upstream/bin/clang++ -target wasm32-unknown-emscripten -DEMSCRIPTEN -fignore-exceptions -fvisibility=default -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -D__EMSCRIPTEN_major__=3 -D__EMSCRIPTEN_minor__=1 -D__EMSCRIPTEN_tiny__=1 -D_LIBCPP_ABI_VERSION=2 -Werror=implicit-function-declaration -Xclang -iwithsysroot/include/SDL --sysroot=/home/sethbassetti/emsk/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/compat -Iinclude -I../emsk/emsdk/upstream/include/ src/interface.cpp -c -o /tmp/emscripten_temp_gfg6j40o/interface_2.o' failed (returned 1)
我不确定问题是什么,因为我正在关注几乎完全将 C++ 类链接到 javascript 的 embind 文档。我玩过很多不同的版本,似乎没有什么能够执行这个类+方法绑定。任何帮助,将不胜感激!