我正在尝试在C ++项目中使用Google的协议缓冲区。我可以建立它就好了......一个iOS框架目标。但是,我似乎无法让编译器找到任何google / protobuf文件。我已经有了静态库文件(不确定这个是否适用于我的架构?我使用过:https://gist.github.com/BennettSmith/9487468ae3375d0db0cc)
在proto文件的输出中,假设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)
但它似乎没有任何帮助。这是怎么回事?当我有.a文件时如何包含lib protobuf?我是否必须从源代码编译它?
答案 0 :(得分:0)
原来我必须做多件事:
我必须将整个protobuf include
文件夹(包含所有标题的文件夹)复制到我的项目中。然后将它们包含在我的LOCAL_EXPORT_C_INCLUDES
另外,我用来做ndk-build的命令也不完全正确。它缺少大量的东西,比如缺少“字符串”或vector
或map
。所以我用这个代替了:
ndk-build V=1 NDK_PROJECT_PATH=. APP_BUILD_SCRIPT=Android.mk APP_STL=stlport_static