2015-05-29 2 views
0

Я пытаюсь использовать буфер протокола Google в проекте на C++. Я могу построить его просто отлично, скажем ... цель iOS framework. Однако я не могу заставить компилятор найти какие-либо файлы google/protobuf. У меня уже есть статический файл библиотеки (? Не уверен, если это работает на моей архитектуре я использовал: https://gist.github.com/BennettSmith/9487468ae3375d0db0cc)Как скомпилировать буфер протокола в файл .so

на выходе файла прото, скажем blah.pb.h, у меня есть ссылка на Protobuf:

#include <google/protobuf/stubs/common.h>

компилятор не может найти это^ссылка.

Я пытался ndk-build с чем-то вроде этого:

include $(CLEAR_VARS) 
LOCAL_MODULE := libprotobuf 
LOCAL_SRC_FILES := src/lib/libprotobuf.a 
include $(PREBUILT_STATIC_LIBRARY) 

LOCAL_SRC_FILES:=$(shell find src/lib -name '*.cpp') 
LOCAL_MODULE := mymodule 
LOCAL_C_INCLUDES += ./src/lib 

LOCAL_STATIC_LIBRARIES := libprotobuf 
include $(BUILD_SHARED_LIBRARY) 

но это, кажется, не помогает вообще. что происходит? как я могу включить lib protobuf, когда у меня есть файл .a? мне нужно скомпилировать его из источника?

+0

путь включить (папку), который содержит Google/Protobuf/окурки/common.h whould быть включены в файл сборки (IIRC что-то с LOCAL_C_INCLUDES) – Selvin

+0

@Selvin любой идеи о том, как именно это сделать? –

+0

@ Обновлен код Selvin. но все равно не работает. Я использую LOCAL_C_INCLUDES, а файл .a находится в 'src/lib' –

ответ

0

оказывается, у меня есть к нескольким вещам:

я должен дублировать всю Protobuf include папку (тот, со всеми заголовками) для моего проекта. а затем включите их в мою команду LOCAL_EXPORT_C_INCLUDES

также команда, которую я использовал для создания ndk-build, также не совсем корректна. ему не хватало тонны вещей stl, например, отсутствовала «строка» или vector или map. поэтому я использовал вместо этого:

ndk-build V=1 NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL=stlport_static 

NDK - Android Java with native (JNI) C++ code build issue

Смежные вопросы