How to include multiple c files to compile in android NDK?

By | April 28, 2012

I ran into problem when I had multiple C files in my project. Single C file was OK for me.
I was getting undefined reference error while doing this.
Then I found out the solution after a lot of search in google.

You can check this post before going through this post.
This is about setting up NDK in MAC.
Starting with NDK for Android – A Simple example. OR How to run a C code in android?

I have to make the change in the Android.mk file to include other files to compile.

This is the content of my Android.mk file

[java]
LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_LDLIBS := -llog

LOCAL_MODULE := ndksetup
LOCAL_SRC_FILES := native.c test.c test_2.c

include $(BUILD_SHARED_LIBRARY)
[/java]

Here is my native.c code in which I am including those two files test.c and test2.c

[java]

#include <jni.h>
#include <string.h>
#include <android/log.h>

// my test file
#include "test.h"
#include "test_2.h"

#define DEBUG_TAG "NDKSetupActivity"

void Java_com_ndksetup_NDKSetupActivity_printLog(JNIEnv * env, jobject this, jstring logString)
{
jboolean isCopy;
const char * szLogString = (*env)->GetStringUTFChars(env, logString, &isCopy);

__android_log_print(ANDROID_LOG_DEBUG, "TAGGGGG", "NDK: %s", szLogString);

(*env)->ReleaseStringUTFChars(env, logString, szLogString);
}
int Java_com_ndksetup_NDKSetupActivity_fibonacci(int value)
{
int p = 8;
printMe();
printMe2();
return p;
}

[/java]

Leave a Reply

Your email address will not be published. Required fields are marked *