第三十二篇,记一次Windows下Qt使用boost的经历

Win10系统
Qt版本如下所示
在这里插入图片描述
Qt中使用的编译器是MinGW,如下图
在这里插入图片描述
boost版本是1.82.0
好的,描述一下过程:
这个教程下载、编译boost,在boost的目录下生成了stage/lib/目录,然后加入到Qt工程里,主要是include目录即为boost目录,lib目录为stage/lib/,然后编译程序运行,先是对这个教程中的两段代码做了测试,都没问题;因为多线程是常用操作,所以我想先把thread也试试,就很简单,代码如下:

#include <iostream>
#include <boost/thread.hpp>

void func()
{
	std::cout<<"yeah, boost is well done!"<<std::endl;
}

int main(int argc, char *argv[])
{
	QCoreApplication a(argc, argv);
	boost::thread tj(func);
	tj.join();
    return a.exec();
}

然后就怎么也编译不过了,一直undefined reference detach()之类的,总之看起来全是boost::thread库没链接成功的意思;然后就各种方法试了,换lib库(因为同为boost::thread,编译完boost后会生成多个版本)、换pro文件里的写法、手写加库改成操作式加库,还去QQ群里问被人鄙视,但总之没解决。
后来的后来,注意到各个boost库的名字中含有vc142字眼,瞬间恍然,电脑上装着visual studio呢,编译boost不指定toolset它就默认用visual studio的编译器了,而我Qt用的MinGW,怪不得呢,而且Qt有一次的error中还提示了什么incompatible。。。好吧。
然后就是换MinGW编译boost,不过前路依然艰难,当然根本原因还是自己知道的少,走了弯路。一开始指定–toolset=gcc,编译完美滋滋地去找lib了,结果发现全是.a,啥,我不是Windows系统么,怎么给我一堆Linux的库!!又砂岩了(还是知道的少,人家Qt都告诉我了.a在Windows上是可以用的,见下图右下角文件类型过滤器:)(编译前把MinGW的目录加入系统环境变量的Path中)
在这里插入图片描述
我总以为是编译命令中gcc的缘故,需要加其它选项让它生成.lib,况且以前印象中gcc可以在Windows中用的啊,真是老糊涂了。看网上说用什么bjam.exe,又一番折腾后认为我的boost版本高了,bjam是老版本的东西,现在统一用b2.exe了,这可如何是好。
可喜的是,意识到.a在Windows上可用后,决定再试一把,这次借鉴了这位老兄的方法来编译,注意命令中一般要显式指定目录,否则它真的默认给你生成到C盘去。
(不过这次编译耗时是真长,比直接b2.exe长多了,不知道是不是编译器的差异造成的)
再然后就是另一个故事了。
解决了boost编译的问题,加到Qt中也能加了,程序也能编译通过了,可特么运行又出了问题。
还是上边那段多线程的代码,因为我在visual studio中也试过,直接一条过,但Qt就是这么糟心;运行起来console cmd里就一句:

Press <RETURN> to close this window...

别的啥也没有,我心想这是什么魔幻,先拿STL的thread试试吧,哎也不行!
(插播一条,按上边代码的写法,其实连这句也没有,把return语句改成平台无关的return 0;这句才出来,但还是没有别的)
又是一通折腾我天哪~~最后在这位仁兄的指引下才算通了关。
#include <boost/thread.hpp>后就一直出这篇文章里黄色的warning,因为是warning就没在意,没想到真就是它的锅。
好了,over,成功打通Windows下Qt中使用boost!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Windows使用 Qt 和 gRPC 进行开发,你需要进行以下步骤: 1. 安装 gRPC:你可以从 gRPC 的 GitHub 仓库下载预编译的二进制文件,或者使用 vcpkg 包管理器进行安装。具体的安装指南可以参考 gRPC 的官方文档。 2. 创建一个新的 Qt 项目:打开 Qt Creator,选择 "New Project",选择 "Qt Widgets Application" 或者其他适合的项目模板。 3. 配置项目文件:在项目文件(.pro)中添加 gRPC 相关的配置。你需要添加以下内容: ``` QT += network # 添加 gRPC 相关的模块 CONFIG += link_pkgconfig PKGCONFIG += grpc++ grpc # 添加 gRPC 的头文件路径 INCLUDEPATH += /path/to/grpc/include # 添加 gRPC 的库文件路径 LIBS += -L/path/to/grpc/libs -lgrpc++ -lgrpc ``` 请确保将上述路径替换为你实际安装 gRPC 的路径。 4. 编写 gRPC 服务和客户端代码:在项目中创建一个新的源文件,编写 gRPC 的服务定义和客户端代码。你可以使用 Protocol Buffers(protobuf)来定义 gRPC 服务接口,并使用 protoc 工具生成相应的代码。 5. 生成 gRPC 代码:使用 protoc 工具将你的 protobuf 文件转换为 C++ 代码。你可以使用以下命令: ``` protoc -I=path/to/protobuf --grpc_out=. --plugin=protoc-gen-grpc=path/to/grpc/bins/grpc_cpp_plugin your_service.proto ``` 请将上述路径替换为你实际的路径,并将 your_service.proto 替换为你的 protobuf 文件名。 6. 将生成的代码添加到项目中:将生成的 C++ 代码文件添加到你的 Qt 项目中,并在项目文件中将其包含进来。 7. 在 Qt 项目中使用 gRPC:在你的 Qt 项目中,你可以使用生成的 gRPC 代码来创建 gRPC 的服务和客户端对象,并进行相应的调用。 这些步骤应该能帮助你在 Windows使用 Qt 和 gRPC 进行开发。如果你遇到了问题,可以参考 gRPC 的官方文档或者在社区寻求帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值