boost在DevC++中的安装过程

Boost的源码主要分为两类:

一类是源码都在头文件中源码。只用这类源码只需要包含特定的头文件即可。

一类是源码包含在头文件和源文件中。想要使用该类源码需要连接该头文件对应的动态链接库文件。

第二类的源码主要有以下几类:

· Boost.Filesystem

· Boost.GraphParallel

· Boost.IOStreams

· Boost.MPI

· Boost.ProgramOptions

· Boost.Python (see the Boost.Python build documentation before building and installing it)

· Boost.Regex

· Boost.Serialization

· Boost.Signals

· Boost.System

· Boost.Thread

· Boost.Wave

· Boost.DateTime

· Boost.Graph

· Boost.Math

· Boost.Random

· Boost.Test

 

如何利用DevC++中的gcc编译器来对第二种源码进行编译生成动态链接库:

DEV-C++所带的编译器gcc来编译BOOST库。

首先下载BOOSThttp://sourceforge.net/project/showfiles.php?group_id=7586, 然后解压。

为了编译BOOST,首先要编译bjam,然后用bjamgcc来编译出BOOST二进制库。

以下为具体步骤:

1。设置GCC的环境变量PATH

在我的电脑上点击右键,选择Properties菜单项。然后在弹出的对话框中选择Advanced页,点击Environment Variables按钮。

之后进行如下设置选择PATH,然后点击Edit按钮,在最后加上DEV-C++编译器的路径,如D:/Program Files/DEV-CPP/Bin,路径之间用分号分隔。 设置完毕点击OK按钮保存。

2。编译bjam。打开一个命令窗口,进入路径D:/boost_1_42_0/tools/jam/src(只要找到build.bat命令即可),运行命令

build.bat gcc

编译完后会生成bin.ntx86目录,里面有bjam.exe。把bjam.exe拷贝到BOOST库的根目录,如E:/clib/boost_1_42_0

3。利用bjam编译BOOST

BOOST库的根目录下运行bjam --build-dir=build --toolset=gccBOOST库就开始编译了。整个过程会持续四五十分钟左右。生成的库回放在build目录下,如果你想放在不同的目录下,可以在命令行参数--build-dir指定。

(编译完成之后会在duild-dir指定目录中找到编译完成的动态链接库文件。)

4.使DevC++包含boost

Dev-C++的工具->编译选项->目录->C++包含文件中添加boost文件夹的上级目录,如E:/clib/boost_1_42_0

 

 

/

对上面两类的源码进行使用的例子:

例子1:该例子使用一个lambda的头文件

#include <boost/lambda/lambda.hpp>   //只要包含该头文件即可,就能使用该头文件中的所有函数

#include <iostream>

#include <iterator>

#include <algorithm>

using namespace std;

 

int main()

{

    using namespace boost::lambda;

    typedef istream_iterator<int> in;

   

    for_each(in(cin), in(), cout << (_1 * 3) << " ");

 

    return 0;

}

 

例子2:该例子使用正则表达式regex.hpp,编译完成之后需要链接regex的动态链接库

步骤如下:

首先你需要建立一个project,而不能只是编译单个的c++文件,因为在dev c++中,只有在project中才能设置linker的参数。 建立project后,“Project"-->"Project Options"-->"Parameters"选项卡--->linker框中添加:"-lboost_regex-mt",告诉linker在链接的时候,链接regex库。That's Ok

#include <boost/regex.hpp>

#pragma comment(lib,"D:/boost/boost_1_42_0/stage/libboost_regex-meg34-mt.lib")

#include <iostream>

#include <string>

 

int main()

{

    std::string line;

    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

 

    while (std::cin)

    {

        std::getline(std::cin, line);

        boost::smatch matches;

        if (boost::regex_match(line, matches, pat))

            std::cout << matches[1]<<" "<<matches[2] << std::endl;

    }

   

    return 0;

}

 

 

 

参考文献:

http://www.cnblogs.com/vilyLei/articles/1709941.html

http://hi.baidu.com/nkhzj/blog/item/89e675cb56d5771abe09e6a1.html

http://www.boost.org/doc/libs/1_46_0/more/getting_started/windows.html#header-only-libraries

 

Dev-C++,直接检测一个进程是否因为内存不足而崩溃通常是通过操作系统提供的API或者第三方库来间接实现的,因为标准C++库本身并不提供这样的功能。你可以尝试以下几种方法: 1. **异常处理**:如果你的程序正在运行过程分配大量内存,并且担心内存耗尽,可以设置一个异常处理器来捕获`std::bad_alloc`异常,这通常是在尝试动态分配内存失败时抛出的。 ```cpp try { // 动态内存分配 } catch (const std::bad_alloc& e) { // 处理内存不足的情况 } ``` 2. **系统性能指标**:利用Windows API函数,比如`GetProcessMemoryInfo()`可以从进程上下文获取其使用的虚拟内存等信息。不过,你需要包含Windows.h头文件并链接到合适的库。 ```cpp #include <windows.h> ... PROCESS_MEMORY_COUNTERS pmc; if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc))) { if (pmc.WorkingSetSize >= your_memory_threshold) { // 内存过高的警告或处理 } } else { // 获取内存信息失败 } ``` 3. **第三方库**:一些第三方库如`boost`提供了系统资源监控的功能,可以帮助你检测内存占用情况。 4. **定期检查**:在代码设置定时器,定期检查当前内存使用情况,并在达到预设阈值时采取相应措施。 请注意,以上方法并不能直接告诉你某个特定时刻进程内存不足,而是给出一些提示帮助你诊断问题。在实际应用,还需要结合其他日志分析工具来确认内存不足的原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值