2012-10-18

Android NDK R7 major issue glDrawTexfOES

Howdy peoples.  Been a minute since I last posted.

In the process of learning the Android NDK, I've run into a potentially immensely frustrating issue, especially for anyone just trying to learn.  This problem had me stumped literally for days.  Until I brought it to my brother's attention and he found this post:

https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/Inip9SFiRZs

I was attempting to build and run, in Eclipse, some tutorial code from the Android NDK Beginners Guide.  Chapters 6 and 7 to be exact.  I started receiving errors like this:


Function 'glDrawTexfOES' could not be resolved

All of the errors were acting as if the libraries simply were not there, but they were there and the make files appeared to all be in order.

Apparently, the issue mentioned in the Google groups post above, extends to the usage of ANY extension libraries post R6.

Currently, my code is building and running after I changed the Android.mk file to include this line:

LOCAL_CFLAGS    := -DRAPIDXML_NO_EXCEPTIONS -DGL_GLEXT_PROTOTYPES

instead of:
LOCAL_CFLAGS    := -DRAPIDXML_NO_EXCEPTIONS

I may come back and post more about this later, because I may want to add more specifics about the errors I received before the fix.

I want to make one thing clear.  Although Eclipse certainly was not helpful in pinpointing the route of this problem, this is not and Eclipse issue, but an Android NDK issue.

UPDATE:
2012/11/06  -- I thought I might as well post this, because it goes right along with the above problem.  I created a short set of instructions for things that need to be done every time I import the tutorial code from the Android NDK Beginner's Guide.  I really don't have time to explain all the reasons why, but I made this list for myself, so I wouldn't forget, and here it is for the public:


Select File/Import
Select the project folder and check the box for copy project to workspace

Open Android.mk, under jni folder, and change this line:

LOCAL_CFLAGS    := -DRAPIDXML_NO_EXCEPTIONS

to this line:

LOCAL_CFLAGS    := -DRAPIDXML_NO_EXCEPTIONS -DGL_GLEXT_PROTOTYPES

Right click on the project and select Android Tools/Fix Project Properties

Then go to project/properties/C/C++ General/code analysis and uncheck:

Field could not be resolved
Function could not be resolved

Or errors will start popping up as soon as you open anything in the editor.  It might run the first time, but as soon as you try to look at it, it will activate the indexer and start throwing up errors.  Apparently the indexer is not designed to recognize NDK code, of some kinds, in an Android development context.  Oh, Eclipse you rascally rabbit you....


2 comments:

  1. Thanks for posting this, I ran into the same issue, and was getting nowhere with it.

    ReplyDelete
    Replies
    1. That is why I post, sir. (and in case I forget myself lol) You are very welcome.

      Delete

Let me know what you think!