私はAssimpライブラリを共有ライブラリとして構築しました。私はAndroid ndkプロジェクトにそれを含めていますが、うまく構築されますが、ロードすると次のエラーが表示されます。 ネイティブライブラリを読み込めません:My-Native-Activity。Androidのネイティブアクティビティからサードパーティの共有ライブラリを読み込む
(おそらく、ライブラリが含まれておらず、apkとデバイスをチェックしていて、ライブラリがlibsフォルダに追加されていて、/ dataのデバイスにインストールされている/データ/私のアプリ/ libに。)
私は読書をたくさんやったし、この問題を解決する唯一の方法は私のネイティブアクティビティを起動する前に、System.loadLibraryをを使用してそれらをロードすることであると思われます。私は、そのアプローチをとる前に、dlopenを使って動的にロードするほうがいいと思います。
は、私はAndroidが自動的に私の母国活動は(すなわち。私の共有ライブラリ)に依存する共有ライブラリをロードする文句を言わないことを前提に訂正アム?
私は静的ライブラリとしてビルドだろうが、それは仕事を文句を言わない54MBを超えていました。
これは私のAndroid.mkです:私はLOCAL_LDLIBSに-lassimpを追加しようとしました 。それが正しいかどうかは分かりませんが、違いはありません。
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := assimp
LOCAL_SRC_FILES := libassimp.so
include $(PREBUILT_SHARED_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := native-activity
LOCAL_SRC_FILES := main.cpp
LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv2
LOCAL_STATIC_LIBRARIES := android_native_app_glue
LOCAL_SHARED_LIBRARIES := assimp
LOCAL_CPPFLAGS += -march=armv7-a -mfloat-abi=softfp
LOCAL_CFLAGS := $(LOCAL_CPPFLAGS)
TARGET_ARCH_ABI := armeabi-v7a
LOCAL_C_INCLUDES += $(LOCAL_PATH)
include $(BUILD_SHARED_LIBRARY)
$(call import-module,android/native_app_glue)
私は今、この問題に取り組んでいます。共有された.soライブラリがデータフォルダに表示されているのがわかります。しかし、もし私が共有するメインライブラリをコンパイルすると、アンドロイド_mainが呼び出されることはありません。 – Halsafar
Androidで動くように動かされましたか? githubにいくつかのサンプルコードを載せることができますか?アセットディレクトリからの読み込みに問題があります。 Assimpはあなた自身のIOSシステムとIOStreamを実装することができますが、動作させることはできません! Txn! –