2013-03-02 53 views
0

使用Vuforia的ImageTargets示例應用程序,我嘗試使用OpenGL ES 1.1,在jni/Android.mk中將USE_OPENGL_ES_1_1設置爲true,並取消註釋並更改AndroidManifest.xml() 。在轉換項目以使其具有C++透視圖並將ndk-build和適當的include目錄關聯後,我可以在Android設備上成功運行該應用程序。Eclipse #ifdef錯誤使用JNI,Android NDK和Vuforia

然而,問題是,一旦我打開了JNI/ImageTargets.cpp,我得到幾個錯誤在Eclipse中,所有從那裏OpenGL ES 2.0的代碼將執行的地方,第一個是:

說明資源路徑位置類型符號「vertexHandle」可能 無法得到解決ImageTargets.cpp/ImageTargets/JNI線402語義 錯誤

果然,vertexHandle是在ImageTargets.cpp頂部定義中,「#裏面ifdef USE_OPENGL_ES_2_0「塊。因爲USE_OPENGL_ES_2_0沒有定義(每個Android.mk),所以代碼應該能夠成功編譯,並且肯定ndk-build不會報告任何問題。因此,似乎只有Eclipse報告了這些問題,並且在我運行該項目時,Eclipse說:「您的項目包含錯誤,請在運行應用程序之前修復它們。」因此,我無法再運行我的應用程序。從某種意義上說,這很奇怪,直到我打開ImageTargets.cpp和Eclipse「發現」錯誤時,纔會出現這種情況。

到目前爲止,我發現的最佳解決方法是刪除或註釋掉這些行(應該不會導致問題,因爲USE_OPENGL_ES_2_0不應該被定義)...有沒有更好的方式來處理有這個問題?我在Eclipse中錯過了一個應該解決這個問題的設置嗎?

回答

0

我找到了一個解決方案:轉到項目屬性 - > C/C++ Build - >發現選項 - >檢查「自動發現路徑和符號」