欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南

程序员文章站 2022-05-13 22:02:38
...

windows 平台 (vs2017)

  • 安装protobuf

    1. 首先安装cmake
      CMake:https://cmake.org/download/
    2. 下载protobuf的C++版本的源代码
      https://github.com/google/protobuf/releases
      下载 protobuf-cpp-3.5.1.zip 这个包
    3. 解压源码 (路径不要带中文)
    4. 使用cmake 生成 vs2017 工程
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
      稍等片刻
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
    5. 进入生成的 vs2017 工程目录 然后用vs2017 打开项目
    6. F7 等待漫长的编译。。。
    7. 编译完成 生成的文件 在 vs2017工程目录/Debug 目录下
  • 使用protobuf
    1. 随便建一个vs2017 测试工程 这个不是重点 。。
    2. 修改配置 (这个很重要 )
      1,修改预处理器定义:
      项目属性->c/c++ -> 预处理器 -> 预处理器定义 添加这个PROTOBUF_USE_DLLS;宏定义
      2, 添加包含目录 库目录 这个简单 添加protobuf源码 src 目录 和刚刚生成的 debug目录 。看图
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
      3,添加依赖项
      添加libprotocd.lib; libprotobufd.lib
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
    3. 编译protobuf 的 .protobuf 文件
      使用 debug目录下生成的 protoc.exe
      protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/addressbook.proto
      注意空格,上述参数-I为源目录(你的应用程序源代码位于哪里——如果你没有提供任何值,将使用当前目录)、目标目录(你想要生成的代码放在哪里;常与 $SRC_DIR 相同),以及你的 .proto 文件路径
    4. 具体怎么使用protobuf 的语法 这个不属于本篇的范围 可以看 https://blog.csdn.net/u011518120/article/details/54604615 这位大佬的文章 。

注:windows 平台主要是注意 因为项目默认使用的是 动态链接的方式 我之前踩坑就是用静态库去链接 ;其次是 采用静态链接的方式 需要 加一个 宏定义 也就是在 预处理器中加的那个 。

如果还有其他坑 ,最快的解决方式就是 对照源码中的测试项目 去对照他的配置


Ubutun 平台 x64

CXX_SOURCES=$(wildcard *.cpp)
CXX_SOURCES_PROTOBUF=$(wildcard *.cc)
CXX_OBJECTS=$(OBJ_DIR)/$(patsubst %.cpp,%.o,$(CXX_SOURCES))
CXX_OBJECTS_PROTOBUF=$(OBJ_DIR)/$(patsubst %.cc,%.o,$(CXX_SOURCES_PROTOBUF))

BIN_DIR=./bin
OBJ_DIR=./obj

all: $(CXX_OBJECTS) $(CXX_OBJECTS_PROTOBUF)  #-lprotobuf 
    g++ -g -pthread -I/usr/local/include -L/usr/local/lib -std=gnu++11 $(CXX_OBJECTS) $(CXX_OBJECTS_PROTOBUF)  -o IMServer.out

$(OBJ_DIR)/%.o: %.cpp
    g++ -c -g $< -std=gnu++11 -o aaa@qq.com

$(OBJ_DIR)/%.o: %.cc
    g++ -c -g $< -std=gnu++11 -o aaa@qq.com

主要是需要在链接的时候指定库目录 好吧 也没什么难度 。。。。

  • 使用 (番外篇)
    一定有同学注意到 vs2017 也可以开发 - 编译 - 调试 linux 项目了 ,没错 我就是用vs 在开发。
    然后在编译这个项目时 遇到莫名奇妙的问题 。 当然是项目配置问题 。。 这里也贴一下配置的过程

    1. 添加库依赖项 protobuf;
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
    2. 添加库目录
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南
    3. 添加命令行选项
      -pthread
      windows(vs2017) 和 ubutun 平台下 使用 protobuf 3.5.1 安装及使用 防坑指南

    主要问题还是配置库这里 其实套路都一样 。


本篇 完结!

相关标签: protobuf