使用emscripten编译结构时出错

时间:2016-02-22 19:42:31

标签: c++ emscripten

我有以下使用em ++编译的代码:

struct Point6f{
float x0;
float y0;
float z0;
float x1;
float y1;
float z1;
};

struct containerBbox {
float x0;
float y0;
float z0;
float x1;
float y1;
float z1;
};

containerBbox createBbox(Point6f);

EMSCRIPTEN_BINDINGS(my_value_example) {
emscripten::value_array<Point6f>("Point6f")
            .element(&Point6f::x0)
            .element(&Point6f::y0)
            .element(&Point6f::z0)
            .element(&Point6f::x1)
            .element(&Point6f::y1)
            .element(&Point6f::z1);

emscripten::value_object<containerBbox>("containerBox")
            .field("x0", &containerBbox::x0)
            .field("y0", &containerBbox::y0)
            .field("z0", &containerBbox::z0)
            .field("x1", &containerBbox::x1)
            .field("y1", &containerBbox::y1)
            .field("z1", &containerBbox::z1)
            ;

function("createBbox", &createBbox);
}

我收到以下编译错误:

  

错误:C ++需要所有声明的类型说明符       function(“createBbox”,&amp; createBbox);

不要介意Point6f和containerBbox的定义之间的冗余,那些是无关紧要的,我甚至没有设法让emscripten页面的例子起作用(参见:https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/embind.html#value-types),所以我'我不确定可能是什么问题。

1 个答案:

答案 0 :(得分:1)

与需要命名空间的value_obj类似,您需要将emscripten::放在function之前。否则编译器会认为您正在声明一个名为function的C ++函数,而不给它返回类型。