0

我刚刚得到了最后一个 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'

还有更多错误,但如果在我解决这个问题后它们仍然出现,我会发布它们。

因评论而编辑

看起来这样行得通!谢谢。但是你能解释一下为什么 struct 这个词不会影响 C 中的程序吗?

4

1 回答 1

2

您必须struct从定义中删除该词,因为在头文件中aiVector3D声明的方式不同。

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

如果您使用纯 C 编译器,则 aiVector3D 的声明是

struct aiVector3D {
    float x,y,z;
}

这将符合您的定义。

于 2013-04-17T18:29:07.200 回答