boost:asio编译
参考:http://hi.baidu.com/need_for_dream/blog/item/c14a28086a504c33e92488b5.html
环境: VS2010,
boost1.38.0,解压缩后放在,D:/boost_1_38_0。
編譯bjam(这个我没有试过,转过来以后参考)
利用Visual Studio 2005 Command Prompt開啟DOS視窗,將目錄cd到C:/boost_1_34_1/tools/jam/src下,執行build.bat,然後會在C:/ boost_1_38_0/tools/jam/src/bin.ntx86/產生bjam.exe,將bjam.exe複製到c:/ boost_1_38_0/下
1,编译。
boost库大部分源文件是只有投文件,所以有很多库不用编译就可以使用。但是有些库是需要编译源码的。asio就需要编译。
怎么去编译呢?在boost官方网站下载bjam.exe,放入boost源文件的根目录下面。因为asio依赖于其它的一些库,所以编译参数还有点复杂。然后在cmd下输入
D:/boost_1_38_0>bjam --with-system --with-thread --with-date_time --with-regex -
-with-serialization stage
编译完成后就可以在boost_1_38_0/stage里面找到编译好的库文件。如果在编译的时候出现编译器方面的错误,可以尝试运行C:/Program Files/Microsoft Visual Studio 9.0/VC/vcvarsall.bat,自动设置编译环境。
有时候你的系统上面可能装了几个版本的VS,那么怎么指定版本呢?
D:/boost_1_38_0>bjam --without-python --toolset=msvc-10.0 --with-thread --with-date_time --with-regex -
-with-serialization stage
--without-python 表示不使用 python
--toolset : 所使用compiler,Visual Studio 2010為msvc-10.0
--prefix:指定編譯後library的安裝目錄
接下来就是导入include目录boost根目录到vs中,导入编译后的lib文件目录stage/lib到lib路径中去。
vs2010:右击project->properties->VC++ Directories. 将D:/boost_1_38_0加入到include directories中去,将D:/boost_1_38_0/stage/lib加入到Library Directories路径中去。
2, 尝试第一个程序。
把asio下面的文档中的第一个例子抄下来.
- //
- // timer.cpp
- // ~~~~~~~~~
- //
- // Copyright (c) 2003-2008 Christopher M. Kohlhoff (chris at kohlhoff dot com)
- //
- // Distributed under the Boost Software License, Version 1.0. (See accompanying
- // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
- //
- #include <iostream>
- #include <boost/asio.hpp>
- #include <boost/date_time/posix_time/posix_time.hpp>
- int main()
- {
- boost::asio::io_service io;
- boost::asio::deadline_timer t(io, boost::posix_time::seconds(5));
- t.wait();
- std::cout << "Hello, world!/n";
- return 0;
- }
编译,报错!
1>LINK : fatal error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_38.lib'
仔细一查,确实没有找到这个文件,怎么办?
可能是没有编译debug文件,暂时也不知道编译的时候该添加哪个参数让它编译debug文件。于是将编译选项output改为release,再编译。
编译出错。
LINK : fatal error LNK1104: cannot open file 'libboost_regex-vc100-mt-1_38.lib'
郁闷啊。
怎么这么麻烦呢?
网上google了一把,看到下面文字
注意:
使用MSVC或Borland C++,你可能需要在“工程设置”中分别添加 -DBOOST_DATE_TIME_NO_LIB 和-DBOOST_REGEX_NO_LIB 声明,分别禁止Boost.Date_Time和Boost.Regex的自动链接,当然你也可以这样做:build这两个库,然后链接。
试试。加 -DBOOST_DATE_TIME_NO_LIB 和-DBOOST_REGEX_NO_LIB 声明到工程选项的c/C++/commandline后面,编译,成功!高兴!
运行,ok!
bjam编译参数请参考http://www.cppprog.com/2009/0112/48.html;转载如下:
--build-dir=<builddir> | 编译的临时文件会放在builddir里(这样比较好管理,编译完就可以把它删除了) |
--stagedir=<stagedir> | 存放编译后库文件的路径,默认是stage |
--build-type=complete | 编译所有版本,不然只会编译一小部分版本(确切地说是相当于:variant=release, threading=multi;link=shared|static;runtime-link=shared) |
variant=debug|release | 决定编译什么版本(Debug or Release?) |
link=static|shared | 决定使用静态库还是动态库。 |
threading=single|multi | 决定使用单线程还是多线程库。 |
runtime-link=static|shared | 决定是静态还是动态链接C/C++标准库。 |
--with-<library> | 只编译指定的库,如输入--with-regex就只编译regex库了。 |
--show-libraries | 显示需要编译的库名称 |
boost:asio编译的更多相关文章
- 编译boost asio http/server 方法
这段时间学习boost 的asio 编程,想编译asio自带的http/server的程序,无奈在网上根本找不到方法,只能自己摸索学习. 登陆boost asio 的example 目录,(我 boo ...
- boost asio tcp server 拆分
从官方给出的示例中对于 boost::asio::ip::tcp::acceptor 类的使用,是直接使用构造函数进行构造对象,这一种方法用来学习是一个不错的方式. 但是要用它来做项目却是不能够满足我 ...
- boost::asio译文
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENS ...
- boost::asio 使用 libcurl
curl 使用 asio 的官方样例 http://curl.haxx.se/libcurl/c/asiohiper.html, 但这个例子用起来有很明细的 bug,asio 异步IO 只注册一次,也 ...
- boost.asio包装类st_asio_wrapper开发教程(2014.5.23更新)(一)-----转
一:什么是st_asio_wrapper它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_w ...
- Boost.Asio技术文档
Christopher Kohlhoff Copyright © 2003-2012 Christopher M. Kohlhoff 以Boost1.0的软件授权进行发布(见附带的LICENSE_1_ ...
- boost.asio包装类st_asio_wrapper开发教程(一)
一:什么是st_asio_wrapper它是一个c/s网络编程框架,基于对boost.asio的包装(最低在boost-1.49.0上调试过),目的是快速的构建一个c/s系统: 二:st_asio_w ...
- boost::asio 学习
安装 下载-解压 指定安装目录 ./bootstrap.sh --prefix=/usr/local/boost_1_68_0 查看所有必须要编译才能使用的库 ./b2 --show-librarie ...
- boost asio 学习(一)io_service的基础
原文 http://www.gamedev.net/blog/950/entry-2249317-a-guide-to-getting- started-with-boostasio/ 编译环境 b ...
随机推荐
- Chapter 13 建造者模式
建造者模式又叫生成器模式:将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象. 代码: package xiao; import java.util. ...
- ASP.NET MVC 5 学习教程:生成的代码详解
原文 ASP.NET MVC 5 学习教程:生成的代码详解 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 ...
- Android Support Library更新到v22.1之AppCompat新特性
构建一个可以跑在不同版本 Android 平台的软件,是非常复杂和耗时的.为了解决这个问题,Android 推出了 Android Support Library (安卓兼容包),让新的UI控件也可以 ...
- SVProgressHUD的使用
GitHub:https://github.com/samvermette/SVProgressHUD SVProgressHUD和MBProgressHUD效果差点儿相同,只是不须要使用协议,同一时 ...
- 再造 “手机QQ” 侧滑菜单(三)——视图联动
代码示例:https://github.com/johnlui/SwiftSideslipLikeQQ 本 文中,我们将一起使用 UINavigationController 来管理主视图,并实现点击 ...
- Linux下tcpdump用法
根据使用者的定义对网络上的数据包进行截获的包分析工具.tcpdump将网络中传送的数据包的“头”完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供了and. or.not等逻 ...
- UVa 725暴力求解
A - Time Limit:3000MS Memory Limit:0KB 64bit IO Format:%lld & %llu Su Description Writ ...
- Linux命令: chown
touch auth.log root@ubuntu:/work# ls -l auth.log -rw-r--r-- 1 root root 0 Feb 18 19:27 auth.log chow ...
- 使用ant的jar任务打jar包
<?xml version="1.0" encoding="UTF-8"?> <project name="javaTest&quo ...
- 在Delphi中开发使用多显示器的应用程序(MonitorCount和DefaultMonitor)
Windows可以将多个显示器映射为虚拟桌面,使我们可以利用这一点设计出方便工作的应用程序.例如PowerPoint就充分发挥了双显示器的优势(大多数的笔记本电脑都支持),它可以在一个显示器上播放幻灯 ...