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