Javascript 当cmake与emscripten一起使用时,如何解决额外导出的运行时方法异常?

Javascript 当cmake与emscripten一起使用时,如何解决额外导出的运行时方法异常?,javascript,c++,cmake,emscripten,Javascript,C++,Cmake,Emscripten,这里找到了。但是,在使用类似的cmake文件时,抛出的异常:RuntimeError:abort('cwrap'未导出。在运行生成的.js文件时,将其添加到额外导出的\u运行时\u方法(请参阅常见问题解答))中 CMakefileLists.txt代码: cmake_minimum_required(VERSION 3.10) project(solutions) add_definitions("-s EXPORTED_RUNTIME_METHODS='[\"ccall

这里找到了。但是,在使用类似的cmake文件时,抛出的
异常:RuntimeError:abort('cwrap'未导出。在运行生成的
.js
文件时,将其添加到额外导出的\u运行时\u方法(请参阅常见问题解答))中

CMakefileLists.txt代码:

cmake_minimum_required(VERSION 3.10)

project(solutions)

add_definitions("-s EXPORTED_RUNTIME_METHODS='[\"ccall\",\"cwrap\"]'")
add_definitions("-s EXTRA_EXPORTED_RUNTIME_METHODS='[\"ccall\",\"cwrap\"]'")
#SET_TARGET_PROPERTIES(test PROPERTIES LINK_FLAGS "-s EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap']")

add_executable(test hello.cc)

set(CMAKE_EXECUTABLE_SUFFIX ".html")
hello.cc
代码:

#include <emscripten.h>

extern "C" {
  double SquareVal(double val) {
    return val * val;
  }
}

int main() {
  EM_ASM({
    SquareVal = Module.cwrap('SquareVal', 'number', ['number']);
    var x = 12.5;
    alert('Computing: ' + x + ' * ' + x + ' = ' + SquareVal(x));
  });
}

#包括
外部“C”{
双平方值(双平方值){
返回val*val;
}
}
int main(){
EM_ASM({
SquareVal=Module.cwrap('SquareVal','number',['number']);
var x=12.5;
警报('计算:'+x+'*'+x+'='+SquareVal(x));
});
}

我认为通过这种方式,
cwrap
已经添加到了
EXTRA\u EXPORTED\u RUNTIME\u方法中。如何解决这个问题?

下面的方法对我来说很有效,直接调用
emcc
,可能很容易适应
emcmake
emcc-o test.html-s'EXTRA_EXPORTED_RUNTIME_方法=[“cwrap”]-s EXPORTED_函数='[“_square”,“_main”]'hello.cpp