Android に移植することになっている何百もの C++ ファイルを含む大きなプロジェクトがあります。私はプロジェクトとNDKも初めてです。ほとんどのエラーを取り除き、ndk ビルドはここまで進行します。
コンパイル++親指: mylib <= MyApp.cpp
共有ライブラリ: libmylib.so
./obj/local/armeabi/objs/mylib/MyApp.o: 関数内 `MyClass::MyFunction(unsigned long, void*, unsigned long long)':
C:\Development/./jni/AClass.h:249: 「MyClass::Function(unsigned long, void*, unsigned long long)」への未定義の参照
....ここにこれらのエラーメッセージがたくさんあります...
collect2: ld が 1 つの終了ステータスを返しました
/cygdrive/c/Android/android-ndk/android-ndk-r8/build/core/build-binary.mk:369: ターゲット `obj/local/armeabi/libmylib.so' のレシピが失敗しました
make: * [obj/local/armeabi/libmylib.so] エラー 1
「SharedLibrary : libmylib.so」にも移動しますが、上記のように「未定義の参照」というこれらのエラーのヒープが表示されます。クラスが含まれており、関数が定義されています。
build-binary.mk の 369 行目は次のとおりです。
@ $(call host-mkdir,$(dir $@))
しかし、それが何を意味するのかわかりません。共有ライブラリのアクセス許可の問題について何かを読み、すべてのファイルをすべて許可するように設定しましたが、何も変更されませんでした。何らかの理由で mkdir が失敗する可能性がありますか? 問題が何であるかを知っている人はいますか?
どんな助けでも大歓迎です!
ここに私の Android.mk ファイルがあります:
LOCAL_PATH := $(my-dir を呼び出す)
$(CLEAR_VARS) を含める
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := MyApp.cpp
LOCAL_CFLAGS := -D_Android_ -D_Debug_
$(BUILD_SHARED_LIBRARY) を含める