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

时间:2016-09-29 12:08:34

标签: javascript c++ emscripten

我尝试实现一个非常简单的示例来返回数组中的值。我的例子似乎很简单,但我无法理解为什么它不起作用:

这是我在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答案,但我无法正常工作

1 个答案:

答案 0 :(得分:4)

使用ccall时,要传递给C函数的参数必须在数组中,因此用于调用setValuegetValue的JavaScript应为:

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