Boost_1_47_0+STLpor+VS2005终于编译成功

搞了好几天今天晚上终于编译成功了,全部编译通过,2946个哈,


1、准备工作(STLport5.2.1,Boost_1_47_0)

   下载STLportboost库,空间预留多一点至少5个G吧,boost的lib有1.35GB,bin-v2是临时文件(有好几G),编译完了就可以删掉了。

2、STLport配置

   用记事本打开C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vcvarsall.bat(不知道我的为什么是vsvars32.bat,可能是版本问题吧,但一样操作),

把红色划线部分添加上,前面代表你的STLport的位置,后面一个可以在库文件的位置,他会自动建一个

然后,打开vs2005的命令行提示符,运行vcvarsall.bat,

cd 你的STLport目录,使用configure msvc8 查看你的设置是否正确

然后,进入cd build\lib目录, 执行nmake /fmsvc.mak

接下来:nmake /fmsvc.mak install

接下来把上面c:\STLport\stlport、c:\STLport\lib添加到vs2005的vc目录路径,而且放在最上面

基本可以了,给个简单例子,试试:(VC自带的STL没有slist,只有安装成功了,才能编译成功)

#include <slist>

#include <iostream>

using namespace std;

int main(void)

{

slist<int> sl;

sl.push_front(11);

sl.push_front(23);

sl.push_front(39);

//打印单向链表元素

slist<int>::iterator i,iend;

iend=sl.end();

for(i=sl.begin(); i!=iend; i++)

cout << *i << ' ';

cout << endl;

return 0;

}

可以编译成功这个例子了,但是,运行的话:会说“丢失 stlported5.2.dll”;

所以,还需要把%STLport%\bin里面的所有文件都复制到vc的bin文件夹目录下;

如果没有则不用。

 

VS2005->Tool->Option->Projects and Solutions->Visual C++ Directories,选择Include files加上D:\STLport\stlport,记得放在第一个,

选择Library files加上D:\STLport\lib。

3、配置Boost_1_47_0

首先解压出Boost_1_47_0.zip重命名为boost,运行boost根目录下的bootstrap.bat,会产生一个bjam.exe

然后修改C:\boost\tools\build\v2,下的user-config.jam文件,将以下两个地方的替换成红线部分的内容

 using msvc : 8.0 : : <compileflags>/wd4819 <compileflags>/D_CRT_SECURE_NO_DEPRECATE <compileflags>/D_SCL_SECURE_NO_DEPRECATE <compileflags>/D_SECURE_SCL=0 ;

注意这个地方前面要空格

 using stlport : : c:/STLport/stlport:c:/STLport/lib ;

这个前面也要有空格

然后再次进入vs2005的cmd,进入boost根目录下,键入

然后就坐等编译!要好长时间。。。。

编译完以后,然后开始配置vs2005

在工具-选项-vc++目录中的,包含文件,添加c:\boost;

库文件,添加,c:\boost\stage;

运行示例

#include "stdafx.h"
#include <boost/lexical_cast.hpp>
#include <iostream>

using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
 using boost::lexical_cast;

 int a=lexical_cast<int>("123");
 double b=lexical_cast<double>("123.0123456789");
 string s0=lexical_cast<string>(a);
 string s1=lexical_cast<string>(b);
 cout<<"number: "<<a<<"  "<<b<<endl;
 cout<<"string: "<<s0<<"  "<<s1<<endl;
 int c=0;
 try{
  c=lexical_cast<int>("abcd");
 }
 catch(boost::bad_lexical_cast& e){
  cout<<e.what()<<endl;
 } 
  return 1;
 
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值