windows下用vs2008和boost结合编译程序
windows下用vs2008和boost结合编译程序
vc6.0和boost结合出现很多错误
使用asio子库中一个http server的示例程序,代码在libs\asio\example\http\server目录下。
1. 下载boost源文件
http://sourceforge.net/projects/boost/files/boost/1.46.0/
2. 下载boost编译管理工具bjam,它调用系统安装的编译器编译源程序
http://sourceforge.net/projects/boost/files/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip
3. 假设boost的压缩文件解压到F:\boost,boost-jam解压到F:\boost-jam
打开命令提示符,
F:
cd F:\boost
F:\boost-jam\bjam.exe install
这样会编译并安装boost库到C:\boost
4. vs2008中打开菜单Tools->Options->Projects and Solutions->VC++ Directories
在Include files中增加C:\Boost\include
在Library files中增加C:\Boost\lib
5. 新建vs 2008 MFC Application项目mfc2008_boost1,
使用Release配置
Project->Project Properties...->Configuration Properties->C/C++->Precompiled Headers中设置Create/Use Precompiled Header为Not Using Precompiled Headers,即不使用预编译头,否则编译boost示例程序出现预编译错误。
6. 复制boost源码中libs\asio\example\http\server下所有hpp, cpp文件到项目代码目录
7. 编辑mfc2008_boost1Dlg.cpp。
这是增加的代码,从win_main.cpp中复制。
#include "stdafx.h"
#include <iostream>
#include <string>
#include <boost/asio.hpp>
#include <boost/bind.hpp>
#include <boost/function.hpp>
#include "server.hpp"
#include "mfc2008_boost1.h"
#include "mfc2008_boost1Dlg.h"
Cmfc2008_boost1Dlg类中增加一线程函数:
unsigned int Cmfc2008_boost1Dlg::Thread1(LPVOID param)
要增加及修改代码:
boost::function0<void> console_ctrl_function;
BOOL WINAPI console_ctrl_handler(DWORD ctrl_type)
{
switch (ctrl_type)
{
case CTRL_C_EVENT:
case CTRL_BREAK_EVENT:
case CTRL_CLOSE_EVENT:
case CTRL_SHUTDOWN_EVENT:
console_ctrl_function();
return TRUE;
default:
return FALSE;
}
}
unsigned int Cmfc2008_boost1Dlg::Thread1(LPVOID param)
{
try
{
// Initialise server.
http::server::server s("localhost", "88", "F:\\"); //本地88端口监听,访问根目录为F:\
// Set console control handler to allow server to be stopped.
console_ctrl_function = boost::bind(&http::server::server::stop, &s);
SetConsoleCtrlHandler(console_ctrl_handler, TRUE);
// Run the server until stopped.
s.run();
}
catch (std::exception& e)
{
std::cerr << "exception: " << e.what() << "\n";
}
return 0;
}
8. OnInitDIalog中增加线程创建代码:
AfxBeginThread(Thread1, NULL);
9. 删除win_main.cpp
10. 按F7编译项目。Ctrl+F5运行
11. 浏览器打开http://localhost:88/,出现404错误提示,这说明服务已经启动。输入 http://localhost:88/+"F:\ 下文件名" 可访问。
编译boost需要很长时间,有网站制作了编译好的boost库,www.boostpro.com
下载安装程序,按提示选择编译环境和需要的库安装。
windows下用vs2008和boost结合编译程序的更多相关文章
- windows下编译和安装boost库
boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. 获取方式 boost提供源码形式的安装包,可以从boost官方网站下载,目前最新版本是1.59.0. 本机上正好有boos ...
- 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持
Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...
- Windows下用Mingw编译Boost.Regex库
下载Boost库,解压. 定位到regex库文件夹下. GCC所对应的MAKEFILE为gcc.mak 进入命令提示符下,输入make -f gcc.mak 这是如果直接按回车执行的话,会出现错误: ...
- boost库在windows下的编译和使用
因为跨平台的原因,现在要使用到boost库,boost库非常大,现在处于摸索阶段. 首先来说boost库在window下的安装和使用. 一.下载 首先从boost官方主页http://www.boos ...
- boost在windows下的编译(vs2010)
首先说下环境,win7,vs2010. 先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版. 按照说明,直接运行“bootstr ...
- 如何在WINDOWS下编译BOOST C++库 .
如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25 写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0. 1)下载boost ...
- Windows下如何使用BOOST C++库 .
Windows下如何使用BOOST C++库 我采用的是VC8.0和boost_1_35_0.自己重新编译boost当然可以,但是我使用了 http://www.boostpro.com/produc ...
- [分享]PY的Boost自动编译程序 1.1 根据环境自动编译
Python写的Boost自动编译程序 1.1 改进: 根据自己的环境筛选出已安装环境,并列出 环境提供选择. 支持X64位的自动参数编译. 可以选择编译的参数,其他版本持续改进中 自动编译自动安装到 ...
- windows下搭建nginx-rtmp服务器
windows下搭建nginx-rtmp服务器 windows下搭建nginx-rtmp服务器 准备工作 安装MinGW 安装Mercurial 安装strawberryperl 安装nasm 下载n ...
随机推荐
- python - 面向对象(一)
python是一门面向对象的编程语言,python中的一切均是对象. 有对象就提到类,对象和类就像是儿子和老子的关系,是不可分的一对. 什么是类 类就是具有一些共同特性的事物的统称.好比人类, ...
- .NET基础拾遗(6)特性
1 神马是特性?如何自定义一个特性? (1)特性是什么 特性是一个对象,可以加载到程序集及程序集的对象中,这些对象包括 程序集本身.模块.类.接口.结构.构造函数.方法.方法参数等,加载了特性 ...
- javascript 模仿 html5 placeholder
<form action="?action=deliver" method="post" class="deliver-form"&g ...
- 使用css3属性,大部分浏览器要识别前缀
例如以下代码的解析 -ms-transform:rotate(7deg); -moz-transform:rotate(7deg); -webkit-transform:rotate(7deg); - ...
- Oracle复杂查询
1:列出所有员工的姓名,部门名称,和工资 select a1.ename,a1.sal,a2.dname from emp a1,dept a2 where a1.deptno = a2.deptno ...
- hdu 3460
算法:字典树 题意:给你一些单词,有一台打印机只能进行以下三种操作 1.读入 2.删除 3.打印 让你输出最少的操作次数将这些单词全部打印出来: (字典树节点-1)*2 表示读入和删除操作: 打印操 ...
- 转载:Struts2+Jquery实现ajax并返回json类型数据
摘要: 主要实现步骤如下: 1.JSP页面使用脚本代码执行ajax请求 2.Action中查询出需要返回的数据,并转换为json类型模式数据 3.配置struts.xml文件 4.页面脚本接受并处理数 ...
- Ibatis 后台打印完整的sql语句
http://blog.csdn.net/deng11342/article/details/9122015 http://www.blogjava.net/libin2722/archive/200 ...
- css 溢出文本显示省略号
这个标题其实已经是一个老生常谈的问题了.很多时候,比如网站最基本的文章列表,标题会很长,而显示列表的区域宽度却没有这么宽,这时候最正常的做法就是 让超出宽度的部分文字用省略号(…)来表示.通常做法是网 ...
- python列表sort方法的两个参数key, reverse
使用列表的sort方法可以进行排序,其中有两个参数用来表示排序的方式,代码: In [7]: a = ['x11','abc323','e26','112ddd'] In [8]: a.sort(ke ...