У меня есть файл 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, но это приводит к той же ошибке. Есть идеи, почему? Спасибо!