Java コードで:
System.loadLibrary("twolib-second");
int z = add(1, 2);
public native int add(int x, int y);
最初の.cpp:
#ifdef __cplusplus extern "C" {
#endif
using namespace std;
int first(int x, int y) {
return x*10 + y; }
#ifdef __cplusplus }
#endif
秒.c:
//THIS IS THE source of trouble :) //without the include of vector works just fine //but after adding the include for vector code can't be compiled #include <vector>
#include <jni.h>
jint
Java_com_example_jniexample_MainActivity_add( JNIEnv* env,
jobject this,
jint x,
jint y )
{
return first(x, y);
}
Android.mk:
LOCAL_PATH:= $(call my-dir)
# first lib, which will be built statically
#
include $(CLEAR_VARS)
LOCAL_MODULE := libtwolib-first
LOCAL_SRC_FILES := first.cpp
include $(BUILD_STATIC_LIBRARY)
# second lib, which will depend on and include the first one
#
include $(CLEAR_VARS)
LOCAL_MODULE := libtwolib-second
LOCAL_SRC_FILES := second.c
LOCAL_STATIC_LIBRARIES := libtwolib-first
include $(BUILD_SHARED_LIBRARY)
このエラーが発生し続けます:
jni/second.c:20 から: /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:6:1: エラー: 予想される '=' 、「、」、「;」、「asm」または「属性」を「<」トークンの前に/home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_relops_cont. h:14:1: エラー: 予想される '='、','、';'、'asm' または ' attribute ' '<' トークン /home/username/dev/ndk/android-ndk-r9/sources/ cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: エラー: '<' トークン /home/username/ の前に'='、','、';'、'asm' または ' attribute ' が予想されますdev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: エラー:「=」、「,」、「;」、「asm」、または「属性」が必要です' before '<' token /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21:1: error: expected '=', ', '、';'、'asm' または ' attribute ' '<' トークンの前 /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_relops_cont.h:21 :1: エラー: '<' トークンの前に'='、','、';'、'asm' または ' attribute ' が必要です /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl /stlport/stlport/stl/_relops_cont.h:24:1: エラー: '='、','、';'、'asm' または '属性が必要です' before '<' token /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/vector:37:0 からインクルードされたファイル内、jni/second.c:20 から: /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_vector.h:752:10: エラー: '='、','、';'、 ' <' トークンの前の'asm' または ' attribute ' /home/username/dev/ndk/android-ndk-r9/sources/cxx-stl/stlport/stlport/stl/_vector.h:760:10: エラー: 予期される「=」、「,」、「;」、「asm」または「属性」が「<」トークンの前にある
Application.mk で
APP_STL := stlport_static