原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://co63oc.blog.51cto.com/904636/504469

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结合编译程序的更多相关文章

  1. windows下编译和安装boost库

    boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. 获取方式 boost提供源码形式的安装包,可以从boost官方网站下载,目前最新版本是1.59.0. 本机上正好有boos ...

  2. 【转】Windows下使用VS2008编译OpenCV 2.1 添加Intel TBB和Python支持

    Windows下使用VS2008编译OpenCV2.1 添加Intel TBB和Python支持 步骤: 1.仔细阅读OpenCV官网上的InstallGuide:http://opencv.will ...

  3. Windows下用Mingw编译Boost.Regex库

    下载Boost库,解压. 定位到regex库文件夹下. GCC所对应的MAKEFILE为gcc.mak 进入命令提示符下,输入make -f gcc.mak 这是如果直接按回车执行的话,会出现错误: ...

  4. boost库在windows下的编译和使用

    因为跨平台的原因,现在要使用到boost库,boost库非常大,现在处于摸索阶段. 首先来说boost库在window下的安装和使用. 一.下载 首先从boost官方主页http://www.boos ...

  5. boost在windows下的编译(vs2010)

    首先说下环境,win7,vs2010. 先在http://www.boost.org/users/download/上下载boost安装包,我下的是1.52.0版. 按照说明,直接运行“bootstr ...

  6. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

  7. Windows下如何使用BOOST C++库 .

    Windows下如何使用BOOST C++库 我采用的是VC8.0和boost_1_35_0.自己重新编译boost当然可以,但是我使用了 http://www.boostpro.com/produc ...

  8. [分享]PY的Boost自动编译程序 1.1 根据环境自动编译

    Python写的Boost自动编译程序 1.1 改进: 根据自己的环境筛选出已安装环境,并列出 环境提供选择. 支持X64位的自动参数编译. 可以选择编译的参数,其他版本持续改进中 自动编译自动安装到 ...

  9. windows下搭建nginx-rtmp服务器

    windows下搭建nginx-rtmp服务器 windows下搭建nginx-rtmp服务器 准备工作 安装MinGW 安装Mercurial 安装strawberryperl 安装nasm 下载n ...

随机推荐

  1. VS2015 添加DNX SDK

    第一次运行VS2015,添加第一个ASP.NET 5程序时会报一个错误“DNX SDK版本 “dnx-clr-win-x86.1.0.0-beta5”无法安装. 解决办法: 打开CMD :输入 @po ...

  2. SQL中@@ROWCOUNT函数

    返回受上一语句影响的行数.如果行数大于 20 亿,请使用 ROWCOUNT_BIG. 语法 @@ROWCOUNT        返回类型 int   注释 Transact-SQL 语句可以通过下列方 ...

  3. (转)IIS5.1的安装配置并发布ASP.NET网站

    最近跟老师做一个桥梁养护系统的项目,要求用VS2008+Sql Server2000,服务器用IIS.由于之前做过的ASP.NET项目都是用的VS内置的服务器,并没有使用过IIS,第一次搭,花了几个小 ...

  4. c# 代码执行时间

    Stopwatch sw = new Stopwatch(); sw.Start(); Thread.Sleep(2000); sw.Stop(); System.Diagnostics.Trace. ...

  5. Android -------- 使手机状态栏背景颜色和activity的一致

    Activity类中: @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInsta ...

  6. 正则表达式,Regex类

    C#regex是正则表达式类用于string的处理,查找匹配的字符串.1,先看一个例子Regex regex=new Regex(@”OK“)://我们要在目标字符串中找到"OK" ...

  7. webrtc之视频显示模块--video_render

    在上一篇博文中,简单介绍了webrtc为我们提供了跨平台的视频采集模块,这篇博文也简单介绍下webrtc为我们提供的跨平台的视频显示模块:video_render. 该模块的源码结构如下: 如上图,我 ...

  8. 头文件 .h 与源文件 .ccp 的区别

    .h 文件一般是用来定义的,比如定义函数.类.结构体等: .cpp 文件则是对头文件的定义进行实现. include .h文件,可以调用你声明的函数.类等.当然,比较简单的类.函数,你也可以直接在头文 ...

  9. 新建一个vs2010的MFC工程

    1.在新建mfc工程时Visual C++下的MFC MFC ActiveX Control用来生成MFC ActiveX控件程序 MFC Application用来生成MFC应用程序. MFC DL ...

  10. MYSQL 磁盘临时表和文件排序

    因为Memory引擎不支持BOLB和TEXT类型,所以,如果查询使用了BLOB或TEXT列并且需要使用隐式临时表,将不得不使用MyISAM磁盘临时表,即使只有几行数据也是如此. 这会导致严重的性能开销 ...