如何用协议缓冲区编译成.so文件

how to compile with protocol buffer into .so file

本文关键字:so 文件 编译 缓冲区 何用 协议      更新时间:2023-10-16

我试图在一个c++项目上使用谷歌的协议缓冲区。我可以做得很好,比如说…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 ?我必须从源代码编译它吗?

原来我必须做很多事情:

我必须复制整个protobuf include文件夹(一个与所有的头)到我的项目。然后将它们包含在我的LOCAL_EXPORT_C_INCLUDES

也,我用来做ndk-build的命令也不完全正确。它丢失了很多东西,比如丢失了"string"或vectormap。所以我用这个代替:

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

NDK - Android Java with native (JNI) c++代码构建问题