通过Emscripten生成的代码不返回值

Generated code via Emscripten doesn't return values

本文关键字:代码 返回值 Emscripten 通过      更新时间:2023-09-26

我尝试实现一个非常简单的示例来从数组返回值。我的例子看起来很简单,但我不明白为什么它不工作:

这是我用c++写的代码

static int results[20];
extern "C" {
    void setValue(int index, int value {
        results[index] = value;
    }
    int getValue (int index) {
        return results[index];
    }
};

我的代码在。html:

Module.ccall('setValue',null,['number','number'],1,1);
var val = Module.ccall('getValue','number',['number'],1);

编译命令:

emcc --bind -o face_quick_example.js face_quick_example.cpp -s EXPORTED_FUNCTIONS="['_setValue','_getValue']"

我检查了教程和一些stackoverflow答案,但我不能做工作

当使用ccall时,传递给C函数的参数必须在数组内,因此调用setValuegetValue的JavaScript应该是:

Module.ccall('setValue', null, ['number', 'number'], [1, 1]);
var val = Module.ccall('getValue', 'number', ['number'], [1]);