Я только что получил последний 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?
Вы должны удалить слово struct
из ваших определений, потому что aiVector3D
объявлен по-другому в заголовочном файле.
В связанном заголовочном файле вы видите строку #ifdef __cplusplus
который используется препроцессором для условной компиляции. Это означает, что все до следующего #else
будет скомпилирован в объектный файл, если вы используете компилятор C ++. И этот код говорит нам, что aiVector3D является typedef (= другое имя) для aiVector3t<float>
,
Если вы используете простой C-компилятор, объявление aiVector3D
struct aiVector3D {
float x,y,z;
}
и это будет соответствовать вашим определениям.
Других решений пока нет …