我在cygwin下使用
Android NDK r6b(系统正确更新).我正在修改hello-jni示例以学习使用NDK.由于我有一个用C语言编写的库,我希望在hello-jni中使用(实际上,我创建了一个名为helloworld的prj,其中包含一个名为ndkfoo.cpp的.cpp文件),我在Eclipse中创建了一个新的Android项目(更新为Android),添加了一个jni目录,添加了一个Android.mk和Application.mk文件,编辑它们以编译.cpp.在编译结束时,我获得了一个.so文件.
现在,在helloworld Android.mk中,我需要进行一些编辑,以告诉链接器包含该库.假设库文件是libmylib.so,我有以下android.mk脚本:
LOCAL_PATH:= $(调用my-dir)
包括$(CLEAR_VARS)
LOCAL_MODULE:= ndkfoo
LOCAL_SRC_FILES:= ndkfoo.cpp
LOCAL_C_INCLUDES = $(LOCAL_PATH)/ mylib
LOCAL_LDLIBS = -L $(LOCAL_PATH)/../../ mylib / libs / armeabi / -lmylib
包含$(BUILD_SHARED_LIBRARY)
我的目录按以下方式组织:
d:/android/android-ndk-r6b => android ndk root
d:/android/workspace/helloworld => helloworld project
d:/android/workspace/mylib => mylib project library
(因此,libmylib.so的路径是:d:/ android / workspace / mylib / libs / armeabi).
不幸的是,这似乎不起作用.如果我从ndkfoo.cpp删除对mylib的每个引用,它甚至在我的手机上编译并运行.如果我不删除对mylib的引用,它会编译但不会链接:我得到以下结果:
d:/android/android-ndk-r6b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/windo
WS / bin中/../ LIB / GCC /臂-Linux的androideabi / 4.4.3 /../../../../臂-Linux的androideabi /
bin / ld.exe:找不到-lmylib
PS.
我忘了提到我在helloworld项目的jni目录下运行ndk-buld.
PSS的.
我在互联网上发现了很多类似的问题.我一直使用Visual C/C++ IDE,所以我对GCC,makefile等都很陌生……