我刚刚获得了最后一个assimp SDK,并创建了一个项目,我将其链接到了corectly(链接没有错误)但是我似乎对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 :(得分:2)
您必须从定义中删除struct
这个词,因为aiVector3D
的声明方式不同in the header file。
在链接头文件中,您会看到预处理器用于条件编译的行#ifdef __cplusplus
。这意味着如果您使用C ++编译器,那么直到下一个#else
的所有内容都将被编译到目标文件中。此代码告诉我们aiVector3D是aiVector3t<float>
的typedef(=其他名称)。
如果使用普通的C编译器,则aiVector3D的声明为
struct aiVector3D {
float x,y,z;
}
这适合你的定义。