2

NDK で書かれたメイン ロジックを持つ Android プログラムがあります。しかし今、いくつかの python コードをメイン ロジックの一部として評価したいと考えています。だから私はこの埋め込みPythonをC http://docs.python.org/2/extending/embedding.htmlで使用しようとしました

このようなnative.cを使用して、単純なAndroidプロジェクトを作成しました(私がしたことは、Pythonヘッダーを追加することだけでした)

#include <Python.h>
#include <jni.h>
#include <string.h>
#include <android/log.h>
#include <pthread.h>
#define DEBUG_TAG "NDK_AndroidNDK1SampleActivity"

void Java_com_example_com_test_mytest_MainActivity_helloLog(JNIEnv * env, jobject this, jstring logThis)
{
    jboolean isCopy;
    const char * szLogThis = (*env)->GetStringUTFChars(env, logThis, &isCopy);
    __android_log_print(ANDROID_LOG_DEBUG, DEBUG_TAG, "NDK:LC: [%s]", szLogThis);
    (*env)->ReleaseStringUTFChars(env, logThis, szLogThis);
}

ここに私の Android.mk があります

LOCAL_PATH := $(call my-dir)  
include $(CLEAR_VARS)  
LOCAL_LDLIBS := -llog `python2.7-config --ldflags`
LOCAL_MODULE    := ndk1  
LOCAL_SRC_FILES := native.c  
LOCAL_CFLAGS := `python2.7-config --cflags`
#LOCAL_SHARED_LIBRARIES := -lpthread
include $(BUILD_SHARED_LIBRARY) 

コンパイル時に次のエラーが発生しました(Macを使用)

Compile thumb  : ndk1 <= native.c
arm-linux-androideabi-gcc: error: i386: No such file or directory
arm-linux-androideabi-gcc: error: x86_64: No such file or directory
arm-linux-androideabi-gcc: error: unrecognized option '-arch'
arm-linux-androideabi-gcc: error: unrecognized option '-arch'
make: *** [obj/local/armeabi/objs/ndk1/native.o] Error 1

誰でも助けてくれますか?:D

4

1 に答える 1

0

Python2.7-config は、Android 用ではなく 64 ビット i386 システム用にビルドされました。LOCAL_CFLAGS フィールドでコンパイラに不適切な引数を渡しています。Android でクロス コンパイルするためにビルドしたものを実行するか、自分で値を指定します。NDK アプリに Python を埋め込む方法については、Google で「Python-For-Android」(P​​y4A) を確認してください。

于 2013-09-18T15:21:48.170 に答える