我有一个包含数百个 c++ 文件的大项目,我应该将它们移植到 Android。我也是该项目和 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”的配方失败
制作:* [obj/local/armeabi/libmylib.so] 错误 1
它现在甚至转到“SharedLibrary:libmylib.so”,但后来我得到了一堆这些错误“未定义的引用”,就像上面一样。包含类并定义了功能。
build-binary.mk 中的第 369 行是:
@$(调用主机-mkdir,$(dir $@))
但我不知道那是什么意思。我阅读了一些关于共享库权限问题的内容,并将所有文件设置为允许一切,但这并没有改变任何东西。会不会是 mkdir 由于某种原因失败了?有谁知道是什么问题?
任何帮助是极大的赞赏!
这是我的 Android.mk 文件:
LOCAL_PATH := $(调用我的目录)
包括 $(CLEAR_VARS)
LOCAL_MODULE := mylib
LOCAL_SRC_FILES := MyApp.cpp
LOCAL_CFLAGS := -D_Android_ -D_Debug_
包括 $(BUILD_SHARED_LIBRARY)