私はAndroid用OpenSSL(ndk-buildを使用)をビルドし、それを私のプログラムにリンクしました。コンパイルとリンクは動作しますが、実行時エラーUnsatisfiedLinkErrorが発生します。 具体的には、このコードでプログラムブレーク:Android用のsslをUnsatifiedLinkErrorに読み込むことができません
public class TestActivity extends Activity
{ // load the library - name matches jni/Android.mk
static {
System.loadLibrary("crypto2");
System.loadLibrary("ssl2"); // <=BREAKS HERE!
System.loadLibrary("Test");
}
SSL2をロードする際には、具体的壊れるので、crypto2をロードすることができたそうです。 私はssl2にcryto2を使用するように伝える必要があると思います。私はAndroid.mkファイルでそれを試みましたが、それは役に立たなかった。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := libcrypto2
LOCAL_SRC_FILES := OpenSSL/libcrypto2.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := libssl2
LOCAL_SRC_FILES := OpenSSL/libssl2.so
LOCAL_SHARED_LIBRARIES := libcrypto2
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS) # Here we give our module name and source file(s)
LOCAL_C_INCLUDES := D:/DevelopTools/OpenSSL-WIN32/include $(LOCAL_PATH)/../../../Framework/Applications/FW2Prototype $(LOCAL_PATH)/../../../Graphics/Libraries/Common $(LOCAL_PATH)/../../../Input/Libraries/Common $(LOCAL_PATH)/../../../Audio/Libraries/Common $(LOCAL_PATH)/../../../Audio/Libraries/NullAudio $(LOCAL_PATH)/../../../Network/Libraries/Common
LOCAL_MODULE := Test
LOCAL_SRC_FILES := Test.cpp Reference.cpp JNINetwork.cpp JNIGraphics2D.cpp JNIInput.cpp JNIAudio.cpp Applications/FatalWars2/FatalWars2.cpp /../../../Audio/Libraries/NullAudio/NullAudio.cpp
LOCAL_SHARED_LIBRARIES := libcrypto2 libssl2
include $(BUILD_SHARED_LIBRARY)
何が悪いと思いますか?
ありがとう、
なぜ[javax.net.ssl](http://developer.android.com/reference/javax/net/ssl/package-summary.html)を使用しないのですか?それは内蔵されています。 – kichik
これは可能ですが、すでにネイティブオプションを使用する方が簡単だと思っていました。 – user1097185