2011-12-13 95 views
0

我在Linux FC16中的OpenGL項目。我們一直在做很多3D,並且非常棒。OpenGL-ES Android:函數指針esUtil.h

本月公司決定將整個系統移植到OpenGL-ES。

我已經安裝了OpenGL ES和往常一樣:

yum install make gcc mesa-libGLES-devel mesa-libEGL-devel 
ref. http://code.google.com/p/opengles-book-samples/wiki/Instructions 

在Eclipse IDE中的ES也包括:

​​3210

嘗試運行的編譯器,它給人的錯誤:

../src/esUtil.h:84:21: error: expected ‘)’ before ‘*’ token 
../src/esUtil.h:85:21: error: expected ‘)’ before ‘*’ token 
../src/esUtil.h:86:21: error: expected ‘)’ before ‘*’ token 

它指引我:

/// Callbacks 
void (ESCALLBACK *drawFunc) (void*); 
void (ESCALLBACK *keyFunc) (void*, unsigned char, int, int); 
void (ESCALLBACK *updateFunc) (void*, float deltaTime); 
ref. http://code.google.com/p/angleproject/source/browse/trunk/samples/gles2_book/Common/esUtil.h?r=486 

我試圖把另外的括號,但它並沒有修復它。這只是讓我發瘋。

任何建議或意見都是值得讚賞的!

回答

1

在esUtil.h嘗試的頂部:

#define __cdecl 

看它是否建立。如果確實如此,那麼你的__cdecl是一個gcc不支持的windows定義。

我想修復將是:

#define __cdecl __attribute__((__cdecl__)) 

PS:CDECL是Visual C擴展不是由海灣合作委員會(我認爲)的支持。

+0

感謝PAntoine。我嘗試了你的兩個建議。然後當我運行編譯器時,顯示的唯一消息是:make:「*** [src/ogl_es01.o] Error 1」。在文件esU​​til.h中,會出現以下警告:「'__cdecl__'屬性被忽略[-Wattributes]」,用於「void(ESCALLBACK * keyFunc)(void *,unsigned char,int,int);」等函數。任何意見或建議? – ThreaderSlash

+0

我很驚訝,第一個沒有工作。這只是從定義中刪除了__cdecl。我沒有在Android上使用OpenGL,但他們在同一個頭文件中做什麼? (你有NDK嗎? - 我假設你有)。嘗試從定義中刪除ESCALLBACK。 – PAntoine