2016-12-29 6 views
0

Я получаю вышеуказанную ошибку при попытке создать функцию, которая принимает struct aiMatrix4x4 * или любые другие aiStructs, я не знаю, почему, я могу мои модели правильно, я просто не могу сделать функцию с выше структуры в качестве параметров для какой-то причине, вот код, я вопрос, я могу даже изолировать его, и он по-прежнему дает мне ошибку ...Ассимп разработанный тип относится к typedef

#include <math.h> 
#include <assimp/cimport.h> 
#include <assimp/scene.h> 
#include <assimp/postprocess.h> 
#include <assimp/matrix4x4.h> 

// A Bit Later in the Code 

static inline void mat4x4_loadassimp(mat4x4 M, struct aiMatrix4x4* a); 

Я использую последнюю assimp скомпилированные из исходных кодов .. с C. Использование clang в качестве компилятора.

+0

Я не могу помочь вам больше, что DEV проекта https://github.com/assimp/assimp/issues/ 1126. Но у меня нет проблем с 'struct aiMatrix4x4 * a', я получаю' unknow mat4x4'. – Stargateur

+0

Кажется, что 'typedef' доступен только с C++. – Stargateur

+0

Вы должны опубликовать свой реальный код, потому что я не могу воспроизвести этот [mcve]. – Stargateur

ответ

0

Согласно doc. aiMatrix4x4 - это typedef в C++.

Значит, вы не можете написать struct aiMatrix4x4 в C++.

static inline void mat4x4_loadassimp(mat4x4 M, aiMatrix4x4 *a); 

При компиляции в C, вы должны написать:

static inline void mat4x4_loadassimp(mat4x4 M, struct aiMatrix4x4 *a); 
+0

'inline' изменяет семантику кода wrt одно правило определения. Вероятно, вы говорите о том, следует ли включать функцию. –

+0

@ M.M Можете ли вы связать мне какой-нибудь документ? Я не знаю, что вы делаете. – Stargateur

+1

см. [Здесь] (http://stackoverflow.com/questions/6312597/is-inline-without-static-or-extern-ever-useful-in-c99) и [здесь] (http://stackoverflow.com/questions/216510/extern-inline) –