Ошибка компиляции структур с помощью 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", & createBbox);

Не обращайте внимания на избыточность определений Point6f и containerBbox, они не имеют отношения к делу, мне даже не удалось заставить работать пример страницы emscripten (см .: https://kripken.github.io/emscripten-site/docs/porting/connected_cpp_and_javascript/embind.html#value-types), поэтому я не уверен, в чем может быть проблема.


person Francisco Peters    schedule 22.02.2016    source источник


Ответы (1)


Подобно тому, как value_obj требуется пространство имен, вам нужно поставить emscripten:: перед function. В противном случае компилятор думает, что вы объявляете функцию C ++ с именем function, не указывая ей возвращаемый тип.

person The Dark    schedule 22.02.2016
comment
Спасибо, сэр, вот и все! :) - person Francisco Peters; 22.02.2016