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.