抽样误差

Assimp Sample giving errors

本文关键字:误差      更新时间:2023-10-16

我刚刚得到了最后一个assimp SDK,并做了一个项目,我正确地链接了它(链接没有错误),但我似乎对样本项目有一些麻烦。更具体地说就是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:librariesassimp--3.0.1270-sdkincludeassimpvector3.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'

有更多的错误,但如果他们仍然出现后,我解决了这个问题,我会张贴他们。

因评论而编辑

看起来可行!非常感谢。但是你能解释一下为什么struct这个词不会影响C语言中的程序吗?

你必须从你的定义中删除struct这个词,因为aiVector3D在头文件中的声明是不同的。

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

如果你使用一个普通的C编译器,aiVector3D的声明是

struct aiVector3D {
    float x,y,z;
}