1
lotigine OP 。。。有人在吗。。。。。。
|
2
sqbing 2014-07-15 11:40:54 +08:00
在Mac上测试没有遇到sscanf找不到的问题,把你的hello-jni.c和Android.mk贴出来看看
|
3
lotigine OP @sqbing
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_CFLAGS := -Wall -pedantic -std=c99 -g LOCAL_LDLIBS := -L jni/ -lrsa -lc LOCAL_MODULE := hello-jni LOCAL_SRC_FILES := hello-jni.c include $(BUILD_SHARED_LIBRARY) |
4
lotigine OP @sqbing
#include <string.h> #include <jni.h> #include "librsa.h" jstring Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env, jobject thiz ) { #if defined(__arm__) #if defined(__ARM_ARCH_7A__) #if defined(__ARM_NEON__) #define ABI "armeabi-v7a/NEON" #else #define ABI "armeabi-v7a" #endif #else #define ABI "armeabi" #endif #elif defined(__i386__) #define ABI "x86" #elif defined(__mips__) #define ABI "mips" #else #define ABI "unknown" #endif rsa_test(0, NULL); return (*env)->NewStringUTF(env, "tic ttx I " ABI "."); } |
5
sqbing 2014-07-15 11:58:55 +08:00
你确定你的rsa库编译没问题?
|
9
sqbing 2014-07-15 12:20:21 +08:00
你应该在librsa上找原因,或者说在你的编译过程上找原因。
从你的源文件来看,是librsa引用了sscanf这个函数,并且符号被解析为__isoc99_sscanf,NDK中的libc并没有这个符号,所以最后引用错误。 试试使用NDK的工具链编译librsa吧。 |
10
lotigine OP @sqbing 嗯好的,我再试试看这个
toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc |
11
lotigine OP @sqbing 不过貌似这个gcc缺失很多东西啊
CC:=/usr/local/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc -std=c99 -lc 提示缺失 stdio.h 等等啊 |
12
lotigine OP CC:=/usr/local/android-ndk-r9d/toolchains/arm-linux-androideabi-4.6/prebuilt/darwin-x86_64/bin/arm-linux-androideabi-gcc -std=c99 -lc --sysroot=/usr/local/android-ndk-r9d/platforms/android-15/arch-arm/
http://www.kandroid.org/ndk/docs/STANDALONE-TOOLCHAIN.html |