Assimp Sample дает ошибки

Я только что получил последний Assimp SDK и создал проект, я связал его (без ошибок при связывании) Но у меня, кажется, есть некоторые проблемы с проектом Sample. Чтобы быть более конкретным, SimpleOpenGL.
Я использую C ++ в сочетании с OpenGL и Visual Studio 10.

struct aiVector3D scene_min, scene_max, scene_center;

Строка выше создает следующие ошибки.

1>main.cpp(25): error C2371: 'aiVector3D' : redefinition; different basic types
1>d:\libraries\assimp--3.0.1270-sdk\include\assimp\vector3.h(124) : see declaration of 'aiVector3D'
1>main.cpp(25): error C2079: 'scene_min' uses undefined struct 'aiVector3D'
1>main.cpp(25): error C2079: 'scene_max' uses undefined struct 'aiVector3D'
1>main.cpp(25): error C2079: 'scene_center' uses undefined struct 'aiVector3D'

Есть еще ошибки, но я опубликую их, если они все еще появятся после того, как я решу эту.

Изменить из-за комментария

Похоже, это работает! Thnx. Но не могли бы вы объяснить, почему слово struct не повлияет на программу на C?

0

Решение

Вы должны удалить слово struct из ваших определений, потому что aiVector3D объявлен по-другому в заголовочном файле.

В связанном заголовочном файле вы видите строку #ifdef __cplusplus который используется препроцессором для условной компиляции. Это означает, что все до следующего #else будет скомпилирован в объектный файл, если вы используете компилятор C ++. И этот код говорит нам, что aiVector3D является typedef (= другое имя) для aiVector3t<float>,

Если вы используете простой C-компилятор, объявление aiVector3D

struct aiVector3D {
float x,y,z;
}

и это будет соответствовать вашим определениям.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]