2012-07-19 12 views
12

Widziałem to pytanie w innych miejscach, ale odpowiedzi nie mają zastosowania w mojej sytuacji. Mam plik .cpp (nie plik .c). Dostaję błąd:Android NDK, Brak reguły, by celować

Producent: * Nie reguła, aby docelowy jni/native.c', needed by obj/local/armeabi/OBJS/natywny/native.o”. Zatrzymać. Cirapi_android C/C++ Problem

Oto mój Android.mk plik (bardzo prosty):

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

I zostały usunięte wszystkie dodatkowe przestrzenie, które rozwiązać problemy nawzajem. To narzeka na native.c, którego nawet nie ma w moim pliku makefile. Jakieś pomysły?

jestem na MacOSX Snow Leopard, Eclipse Juno, NDK R8

+0

Czy masz 'extern" C "{}' wewnątrz 'native.cpp'? – Macarse

+0

Tak, robię. Plik cpp kompiluje dobrze w Eclipse. Zastanawiam się, czy istnieje problem z ścieżkami lub uprawnieniami. Musiałem określić absolutną ścieżkę dla Eclipse, aby znaleźć plik nagłówkowy jni.h. – alexcir

Odpowiedz

16

Got to do pracy ... nie wiem, co było kluczem ... zmienił makefile do ..

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) 

... usunął też pliki .o z katalogu obj ... podejrzewał, że czysty nie działa poprawnie.

+12

Usunięcie wszystkich plików z katalogu obj wykonało dla mnie. Dzięki! –

+0

Jak dostać się do katalogu obj? –

+0

@adamkim jest dostępny w hierarchii projektu ../ obj/local/armeabi/.. – CoDe