2012-07-19 16 views
12

He visto esta pregunta en otros lugares, pero las respuestas no parecen aplicarse a mi situación. Tengo un archivo .cpp (no un archivo .c). Estoy consiguiendo el error:Android NDK, no hay regla para hacer objetivo

marca: * No hay una regla para hacer diana jni/native.c', needed by obj/local/armeabi/objs/nativo/native.o'. Detener. Cirapi_android C/C++ Problema

Aquí está mi archivo Android.mk (muy simple):

LOCAL_PATH:=$(call my-dir) 
include $(CLEAR_VARS) 
LOCAL_LDLIBS:=-llog 
LOCAL_MODULE:=native 
LOCAL_SRC_FILES:=native.cpp 
include $(BUILD_SHARED_LIBRARY) 

He quitado todos los espacios adicionales que resuelven los problemas del otro. Se está quejando de native.c que ni siquiera he enumerado en mi archivo MAKE. ¿Algunas ideas?

Estoy en MacOSX Snow Leopard, Eclipse Juno, NDK r8

+0

¿Tiene un 'extern" C "{}' inside 'native.cpp'? – Macarse

+0

Sí, lo hago. El archivo cpp compila bien dentro de Eclipse. Me pregunto si hay un problema de rutas o permisos. Tuve que especificar la ruta absoluta de Eclipse para encontrar el archivo de encabezado jni.h – alexcir

Respuesta

16

tengo que trabajar ... no estoy seguro cuál es la clave ... se cambió el makefile a ..

TOP_LOCAL_PATH:=$(call my-dir) 
include $(call all-subdir-makefiles) 
LOCAL_PATH := $(TOP_LOCAL_PATH) 

include $(CLEAR_VARS) 
LOCAL_LDLIBS:=-llog 
LOCAL_MODULE:=native 
LOCAL_SRC_FILES:=native.cpp 

include $(BUILD_SHARED_LIBRARY) 

... también eliminó los archivos .o del directorio obj ... sospechaba que una limpieza no funcionaba correctamente.

+12

eliminando todos los archivos en el directorio obj lo hizo por mí. ¡Gracias! –

+0

¿Cómo se llega al directorio obj? –

+0

@adamkim está disponible en la jerarquía del proyecto ../ obj/local/armeabi/.. – CoDe