Question

I just got the last assimp SDK, and made a project, I linked it corectly ( no errors with linking ) But I seem to have some troubles with the Sample project. To be more specific the SimpleOpenGL one. I am using C++ combined with OpenGL and visual studio 10.

struct aiVector3D scene_min, scene_max, scene_center;

The line above creates the following errors.

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'

There are more errors but I will post them if they still appear after I solve this one.

Edit due to comment

Looks like that works! Thnx. But could you explain why the word struct wouldn't affect the program in C?

Was it helpful?

Solution

You have to remove the word struct from your definitions because aiVector3D is differently declared in the header file.

In the linked header file you see the line #ifdef __cplusplus which is used by the preprocessor for conditional compilation. This means that everything until the next #else will be compiled into the object file if you use a C++ compiler. And this code tells us that aiVector3D is a typedef (= other name) for aiVector3t<float>.

If you use a plain C compiler the declaration of aiVector3D is

struct aiVector3D {
    float x,y,z;
}

and this would fit your defintions.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top