【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
作为c++程序员来说,除了qt之外,另外值得学的开发库就是boost。boost本身包含的内容非常多,基本我们常用的功能都已经包括在内。而且,boost支持不同的平台,既支持windows,又支持linux,这对我们来说就非常地方便。另外,boost本身就是开源库,没有版权的问题。之前,我们已经谈过如何在linux环境下面使用boost(https://feixiaoxing.blog.csdn.net/article/details/132397384),今天主要谈一下如何在windows平台下面使用boost库。
1、下载boost代码,编译
如果需要下载boost代码,可以直接到官网下载即可,地址在这,
https://www.boost.org/
编译的方法也比较简单,主要就是输入这两个命令,
bootstrap.bat
b2.exe
2、配置环境
如果我们需要测试boost库,在创建vs项目之后,一般需要配置一下编译环境。第一个是include目录的位置,
接着是lib目录的位置,
最后就是需要添加的lib库文件,
这里面需要注意的地方,就是务必确认当前设置的平台是32位还是64位、设置的版本是debug版本还是release版本,不然很容易设置之后,完全不起效果。导致自己对自己过往的开发经验都会产生怀疑。
3、测试代码1
首先我们编写一个简单bind代码,验证是否ok。这份代码不需要链接库,一般保证头文件目录设置正确,就能编译通过,
#include<iostream>
#include "boost/bind.hpp"
using namespace std;
using namespace boost;
int fun(int x, int y)
{
return x + y;
}
int main()
{
int m = 10;
int n = 20;
cout << boost::bind(fun, _1, _2)(m, n) << endl;
return 0;
}
4、测试代码2
和之前一个测试用例相比较,这个测试用例稍微复杂点,涉及到了多线程。不过boost里面的多线程使用比较简单,学习难度不大。只是编译的时候,需要设置好lib目录的位置,同时设置好链接的文件,这样就可以编译通过,并且运行起来。
#include <boost/thread/thread.hpp>
#include <iostream>
using namespace std;
void helloA()
{
std::cout << "I'm thread A ! --- Start " << std::endl;
Sleep(3000);
std::cout << "I'm thread A ! --- OVER " << std::endl;
}
void helloB()
{
std::cout << "I'm thread B ! --- Start " << std::endl;
Sleep(3000);
std::cout << "I'm thread B ! --- OVER " << std::endl;
}
int main(int argc, char* argv[])
{
boost::thread thrdA(&helloA);
boost::thread thrdB(&helloB);
thrdA.join();
thrdB.join();
return 0;
}
5、测试代码3
除了上面谈到的demo,另外一个boost比较重要的功能就是network,也就是网络编程。这部分,大家可以自己多多测试验证一下。官网有两个文件,分别是server.cpp和client.cpp,比较适合拿来学习和验证,环境配置和demo2是一样的,不需要修改就能编译通过。
https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/example/cpp03/chat/chat_server.cpp
https://www.boost.org/doc/libs/1_76_0/doc/html/boost_asio/example/cpp03/chat/chat_client.cpp
测试的话,就是./chat_server 127.0.0.1 20000,接着./chat_client 127.0.0.1 2000连接server,这样client输入什么,console就会回显什么。
6、后续
boost本身内容还是比较多的,建议大家多多学习、多多练习一下,重要性方面可能仅次于qt。当然如果没有界面需求的话,那么boost几乎是最好的选择。