2011-10-30 20 views
1

私は(C言語で)このAESライブラリを使用し、
http://gladman.plushost.co.uk/oldsite/AES/aes-src-16-04-07.zip

私は、このページに従って libaesをコンパイルするために言及したcommdsを使用しています。
http://forums.devshed.com/c-programming-42/aes-encrypt-decrypt-in-c-687368.html
NDKビルド

gcc -c -O2 -fomit-frame-pointer aescrypt.c aeskey.c aestab.c aes_modes.c 
ar rcs libaes.a *.o 

私は問題なく libaes.aを使用して私のプログラムをコンパイルして実行することができます。

しかしもし使用NDK-構築私のプログラムをコンパイルするを、(実際に少し変更された)、私はいつもこのエラーメッセージを取得し、コンパイルに失敗
...

」...メンバー aes_modes.oはアーカイブにありません... "

このファイルには何が問題なのですか?
または、プロセスに何が問題なのですか?

私Android.mk:

LOCAL_PATH := $(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_MODULE := libaes 
LOCAL_SRC_FILES := libaes.a 
include $(PREBUILT_STATIC_LIBRARY) 
include $(CLEAR_VARS) 
LOCAL_MODULE := hello-jni 
LOCAL_SRC_FILES := hello-jni.c 
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog 
LOCAL_C_INCLUDES :=\ 
    /android-ndk-r6b/platforms/android-8/arch-arm/usr/include\ 
    /android-ndk-r6b/samples/hello-jni/jni/libaes 
LOCAL_WHOLE_STATIC_LIBRARIES := libaes 
include $(BUILD_SHARED_LIBRARY) 


+0

マイコンピュータ "は、Windows 7、64" です。それは私の問題と関係がありますか? – user538565

答えて

1

私はあなたがネイティブツール(x86)を使用したAESコンパイルし、事前に作成ライブラリとしてそれを使用して感じをしました。私はこのAndroid.mkを試してみた、それが動作します:

LOCAL_PATH := $(call my-dir) 

include $(CLEAR_VARS) 

LOCAL_MODULE := aes 
LOCAL_SRC_FILES := aes/aescrypt.c aes/aeskey.c aes/aestab.c aes/aes_modes.c 

include $(BUILD_STATIC_LIBRARY) 

include $(CLEAR_VARS) 

LOCAL_C_INCLUDES  := jni/aes 
LOCAL_STATIC_LIBRARIES := aes 
LOCAL_MODULE   := hello-jni 
LOCAL_SRC_FILES   := hello-jni.c 

include $(BUILD_SHARED_LIBRARY) 

ちょうどjni/aesaes-src-16-04-07.zipを解凍します。すべての必要なオプションを設定できるので、ndk build systemを使う方が良いと思います。

そしてハローjni.c(念のため):

#include <aes.h> 

void test() { 
    aes_init(); 
} 
+0

それは動作します。ありがとう。しかし、まだ問題があります。 cygwinと暗号化されたファイル(Windows 7、64bit)でプログラムをコンパイルしました。次に、暗号化されたファイルをSDcardにプッシュし、Androidで復号化します。残念ながら、解読されたファイルは読み込みできませんでした。このスレッドと同じ問題があります:http://stackoverflow.com/questions/7937715/android-aes-in-c why? – user538565

+0

uint_8tはPCとAndroidで同じですか? – user538565

+1

最初のことはありましたが、おそらくそれは[エンディアン](http://en.wikipedia.org/wiki/Endianness)の問題ですか?そうであれば、単語のバイトを切り替えてみてください。 – m039

関連する問題