我有一个Android.mk文件可以很好地编译我的NDK C代码:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := galib
LOCAL_SRC_FILES := galib.c tables-lr35-contam.c tables-lr35-perf.c
LOCAL_CFLAGS := -DTARGET_ANDROID=1
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
我想调用第一个源代码galib.cpp而不是.c,因为这是我在WPF环境中编译它时需要的名称。它实际上只是C代码,但是要创建一个DLL,我必须将其命名为.cpp,以便正确处理__declspec(dllexport)内容。
但是,当我将其重命名为galib.cpp并将.mk文件更改为相同并尝试为Android构建它时,我收到错误:
$ ndk-build
make: *** No rule to make target `/cygdrive/c/apk/adev/android/etold/jni/galib.c',
...needed by `/cygdrive/c/apk/adev/android/etold/obj/local/armeabi/objs/galib/galib.o'. Stop.
好像它仍然想要一个.c文件出于某种原因。我也试过“ndk-build -B”,以防.c构建中遗留了一些东西,但这会导致同样的错误。知道为什么吗?谢谢!
答案 0 :(得分:4)
我知道你很久以前就问过了。但无论如何 - 对于像我这样的其他人:
我刚刚解决了这个问题。
由于某些原因,即使您在LOCAL_SRC_FILES
更改源列表,清除构建也无法完成工作。
我必须导航到项目中的\obj\local\armeabi\objs\
并手动清除.o
个文件。
之后编译好了。