Qt Creator + Windows + Protobuf 最优方案(Mqqt通讯采用的方式)

1、弄清楚需要的版本 protobuf-3.14.0

2、protoc-3.14.0-win32 确定当前编译版本 32位或64位

3、总体思路

应用程序调用protobuf库,然后通过protoc工具将配置文件MqttMsg.proto生成C++或者java代码,C++产生:MqttMsg.pb.cc和MqttMsg.pb.h 文件。

VS2015代码通过调用这两个文件的接口,实现与MQQT代理服务器实现通信;

4、实现方式

官网有下载,当前的版本位34.1版本,我们使用旧版本3.14.0版本;

版本需要一致, 可以使用对应版本的库文件和potoc.exe编译proto文件,也可以官网下载一个开源代码,自己编译生成,自己编译比较麻烦,但也不是不可行。

5、开源代码编译实现经验总结

**第一步:gethub 下载源码:**Protocol Buffers v3.14.0Release Protocol Buffers v3.14.0 · protocolbuffers/protobuf · GitHubhttps://github.com/protocolbuffers/protobuf/releases/tag/v3.14.0将代码放到D盘根目录中,

(曾经下载Windows下CMake 3.18.0版本安装包对代码编译,失败)

正确的方法如下:

  1. 打开正确的工具(必须!)

开始菜单 → Visual Studio 2015 →

VS2015 x86 本机工具命令提示符】

(黑色窗口,名字完全一样,不是 PowerShell,不是普通 CMD)

  1. 直接复制下面这一整段,粘贴进去运行

cmd

cd /d D:\protobuf-3.14.0

rmdir /s /q build_x86

mkdir build_x86

cd build_x86

cmake -G "Visual Studio 14 2015" -A Win32 -Dprotobuf_BUILD_SHARED_LIBS=OFF -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=ON ../cmake

cmake --build . --config Debug

cmake --build . --config Release

❌ 绝对不要用

  • PowerShell
  • VS 自带的 PowerShell
  • 普通 cmd(没配置 VS 环境)

你报错的根本原因

.. 在 PowerShell 里是语法符号,被当成代码解析了,所以直接报错!

换成 VS2015 x86 本机命令提示符,一秒解决!

成功之后会产生VS2015的项目文件,例如:

项目打开如下:

如果配置没有问题就可以直接编译产生我们自己编译的静态库文件了;

出现报错:

严重性 代码 说明 项目 文件 行 禁止显示状态 错误 LNK2038 检测到"RuntimeLibrary"的不匹配项: 值"MTd_StaticDebug"不匹配值"MDd_DynamicDebug"(data.obj 中) Client D:\workspace\code\src\TSV790Server\TSV790Server\Client\libprotobufd.lib(common.obj) 1

这是因为项目配置选项存在差异,需要重新编译才可以,处理方案如下:

  1. 检查项目设置
    • 在项目属性中,导航到 "C/C++" -> "代码生成",查看 "运行库" 设置。
    • 确保所有项目(包括依赖库项目)都使用相同的运行库选项:
      • MTd (多线程静态调试)
      • MDd (多线程动态调试)
  2. 修改运行库
    • 如果您的项目需要使用多个库,确保它们都使用相同的运行库设置。可以更改项目设置为相应的选项。
  3. 重新生成解决方案
    • 在修改运行库设置之后,进行"清理"并重新生成解决方案,以确保所有对象文件和库文件都是使用相同的设置构建的。
  4. 检查所有依赖项
    • 如果使用的是第三方库(如 libprotobufd.lib),确保它们是使用相同的编译选项构建的。如果不存在,可以尝试重新编译这些库

生成库和调用库的编译必须一致才可以,

例如:

项目需要引用头文件:

注意产生的lib库,放到合适的位置;

6、文件生成

通过开源编译的protoc.exe 程序进行生成;

加载到我们自己的程序里面即可调用。

相关推荐
三无推导1 小时前
ComfyUI 安装部署教程:Windows 下快速搭建可视化 AI 绘图工作流,零基础也能跑通
人工智能·pytorch·windows·stable diffusion·aigc·ai绘画·持续部署
bug和崩溃我都要1 小时前
Qt 封装 libmpv 全功能视频播放器开发指南
开发语言·qt·音视频
郝学胜-神的一滴1 小时前
Qt 高级开发 018:复刻经典登录界面布局与窗口美化全解析
开发语言·c++·qt·程序人生·用户界面
郝亚军1 小时前
IEEE 754 单精度浮点的SEM表示
开发语言·c++·算法
zhangjw341 小时前
第15篇:Java多线程零基础入门,进程线程、线程创建方式、线程生命周期、线程安全彻底吃透
java·开发语言·面试
蝈理塘(/_\)大怨种2 小时前
类和对象 (上)
java·开发语言
小新1102 小时前
qt creator 将qInfo的输出日志写入日志文档,方便查看
开发语言·qt
hssfscv2 小时前
QT的学习记录1
开发语言·qt·学习
SunnyDays10113 小时前
Python操作Excel批注:从基础添加到高级自定义的完整指南
开发语言·python·excel
Yyyyyy~3 小时前
【C++】数组篇
开发语言·c++