1. 程式人生 > >boost_1_34_1在c++builder6編譯(把所有dll文件復制到windows系統目錄,所以lib文件復制到bcb6lib目錄)

boost_1_34_1在c++builder6編譯(把所有dll文件復制到windows系統目錄,所以lib文件復制到bcb6lib目錄)

解壓 string unit source bject 找到 nbsp catch charset

boost_1_34_1.zip boost 正則表達式 bcb6編譯boost_1_34

有個項目要對大量的文本信息進行分析,以前的方法是自己寫函數然後進行分析。現在發現一個正則表達式的處理方法,其實正則表達式早就知道的,但是一直麽有怎麽深入的了解,呵呵,今天發現正則表達式果然在真方面勝人一籌啊。

首先到http://www.boost.org去下載boost_1_34_1.zip(我是在windows下,所以下載的是zip的,當然可以根據不同的系統去下載不同的包了。其實還是轉到一個開源的地址下載的。23M吧)。下載完畢後,解壓到某個目錄就可以了,然後在命令行模式下到這個目錄[%Boost]\Libs\RegEx\Build,然後直接用命令make -f bcb6.mak,最終編譯完成,會在

[%Boost]\Libs\RegEx\Build目錄生成一個BCB目錄,在這個目錄生成了很多lib文件和dll文件,把所有dll文件復制到windows系統目錄,所以lib文件復制到bcb6\lib目錄。

然後再設置BCB6 Project屬性的Lib Path和Include Path為你安裝boost的目錄。

下面看一個例子:

//例子開始-------------------------

#pragma hdrstop

#include "Unit1.h"
#include <boost/regex.hpp>
#include <string>

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
try {
char *src_str = "<meta http-equiv=\"content-type\" content=\"text/html; charset=x-sjis\">"; // 対象文字列
boost::regex rx( "<META +HTTP-EQUIV=(.*) +CONTENT=(.*) +CHARSET=(.*)>", boost::regex_constants::normal|boost::regex_constants::icase );
boost::cmatch results;

if( boost::regex_match( src_str, results, rx ) == true ) {
AnsiString s;
for( size_t i=1;i<results.size(); ++i ) {
s += "$" + IntToStr(i) + "=" + AnsiString( results.str(i).c_str() ) + "\r\n";
}
ShowMessage( s );
}
}
catch( std::runtime_error &e ) {
throw Exception( e.what() );
}

}
//---------------------------------------------------------------------------

//例子結束-------------------------

然後編譯,這個時候很可能會出現錯誤:[Linker Fatal error] Unable to open file ‘LIBBOOST_REGEX-BCB-MT-1_34_1.LIB‘,我在我編譯的boost目錄下根本沒有查找到這個文件,十分的郁悶。但是這個文件是存在的。

然後在網上搜索的這個類似的錯誤,都沒有找到解決方法,根本就沒有LIBBOOST_REGEX-BCB-MT-1_34_1.LIB相關的搜索結果。然後我就直接修改了LIBBOOST_REGEX-BCB-MT-1_34.LIB為LIBBOOST_REGEX-BCB-MT-1_34_1.LIB,然後編譯順利通過,呵呵

如果你們有更好的解決方法給我留言啊,或者給我發email:[email protected]

http://diyisoft.blog.163.com/blog/static/1117807502007724101954460/

boost_1_34_1在c++builder6編譯(把所有dll文件復制到windows系統目錄,所以lib文件復制到bcb6\lib目錄)