Assimp示例给出错误

时间:2013-04-17 17:56:35

标签: c++ opengl assimp

我刚刚获得了最后一个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中的程序吗?

1 个答案:

答案 0 :(得分:2)

您必须从定义中删除struct这个词,因为aiVector3D的声明方式不同in the header file

在链接头文件中,您会看到预处理器用于条件编译的行#ifdef __cplusplus。这意味着如果您使用C ++编译器,那么直到下一个#else的所有内容都将被编译到目标文件中。此代码告诉我们aiVector3D是aiVector3t<float>的typedef(=其他名称)。

如果使用普通的C编译器,则aiVector3D的声明为

struct aiVector3D {
    float x,y,z;
}

这适合你的定义。