一、背景
一直以来对extern C的理解都停留在表面,只知道为了C/C++混合编程。今天来透彻理解下这个概念。
二、整体的项目结构。
jni
---Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := lesson2
LOCAL_SRC_FILES := Lesson2.cpp MyTest.cpp module.c
LOCAL_LDLIBS := -llog -ldl
LOCAL_CPPFLAGS += -O3
LOCAL_CFLAGS += -fvisibility=hidden
include $(BUILD_SHARED_LIBRARY)
---Application.mk
APP_PLATFORM := android-21
APP_ABI := armeabi-v7a
---com_example_ndkreverse2_Lesson2.h
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_ndkreverse2_Lesson2 */
#ifndef _Included_com_example_ndkreverse2_Lesson2
#define _Included_com_example_ndkreverse2_Lesson2
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_example_ndkreverse2_Lesson2
* Method: main
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_example_ndkreverse2_Lesson2_main
(JNIEnv *, jobject);
#ifdef __cplusplus
}
#endif
#endif
---Lesson2.cpp
#include "com_example_ndkreverse2_Lesson2.h"
#include <android/log.h>
#include <stdlib.h>
#include <string.h>
#include <sys