小氣的神
2003-05-01
?
Article Type: In-Depth?
難度等級(jí):
7/9???????
版本:
1.82
?
“C++ increasingly means Visual C++”???????
- Scott Meyers
?
<
文章的長(zhǎng)度把握不是太好,被
CSDN
的系統(tǒng)裁減,所以接著再來(lái)
J
>
?
?
接下來(lái),我們需要編寫(xiě)一些小的應(yīng)用測(cè)試一下,簡(jiǎn)單一點(diǎn)的
lexical_case
:
取自
http://www.emaki.minidns.net/Programming/tools/Boost/
的例子
使用下面的命令方式。
D:\boost2> cl /GX /MT /GR /EHsc lCase.cpp
?
?
復(fù)雜一點(diǎn)的多線程應(yīng)用使用下面的命令方式:
thread.cpp
取自
C:\boost_1_30_0\libs\thread\example\ thread.cpp
D: \Boost2>cl? /GX /MT /EHsc thread.cpp /link? C:\boost_1_30_0\lib
s\thread\build\bin\boost_thread.dll\vc7\debug\runtime-link-static\threading-mult
i\boost_threadd.lib
?
你可以在這里
download
上述的
Sample
(109K)
,當(dāng)然在測(cè)試的過(guò)程中也有上面我說(shuō)的
VC7.1
無(wú)法編譯過(guò)去的問(wèn)題:
比如取自
http://www.emaki.minidns.net/Programming/tools/Boost/
的
format
例子
還有一些例子是無(wú)法編譯或是有讓人難以理解的警告。
具體記錄在下面的兩個(gè)頁(yè)面中,你可以具體查看一下,不僅
VC7,
甚至還有更多的其他
C++
編譯器的情況。
?
?
http://boost.sourceforge.net/regression-logs/cs-vc71beta-links.html
http://boost.sourceforge.net/regression-logs/cs-vc71beta-Version_1_30_0.html
http://boost.sourceforge.net/regression-logs/
?
接下來(lái),還有接下來(lái)了嗎?回頭看看我們的已經(jīng)走了很遠(yuǎn)了,但愿你用同樣的步伐在和我一起前進(jìn),最后我們來(lái)一起看一下
Biltz++
吧,我已經(jīng)沒(méi)有力氣在暢情漪動(dòng)的介紹有關(guān)
Biltz
的有關(guān)故事和歷史了。必須承認(rèn)這些類庫(kù)都是老字號(hào)的招牌類庫(kù),是
C++
社團(tuán)的輝煌、是激情創(chuàng)造力的溢出,就這些足以讓
.NET
學(xué)一陣跟一程了
.NET
加油!
?
Download
:最新版本
0.6 blitz-0.6.tar.gz? (996K)
http://oonumerics.org/blitz/download/
http://sourceforge.net/project/showfiles.php?group_id=63961
看到
http://oonumerics.org/blitz/platforms/
上的描述差點(diǎn)昏倒,
Visual C++
排在了
Unsupported platforms
之中,甚至連第二等的
Plausible (but not actively supported) platforms
都排不上,這意味著什么,也就是你解壓
Blitz-06.tar.gz
之后,根本不會(huì)在其中找到有關(guān)
Visual C++
的編譯文件和任何有關(guān)的信息。
?
這就是
ISO/ANSI C++
的厲害了,對(duì)于我這樣一個(gè)慕名而來(lái),之前從未使用過(guò)任何其它版本的
Blitz++
的
Visual Studio.NET
用戶來(lái)說(shuō),這有些困難了,所以這時(shí)候講
VC++.NET
強(qiáng)大優(yōu)秀,一點(diǎn)用都沒(méi)有,我們需要的是資源是信息,而不是手上拿著史前最強(qiáng)大的編譯器。還好有網(wǎng)絡(luò),還好有
Google
,
Google
的偉大之處在于它能給你無(wú)比自信的不知所措尋找一個(gè)釋放的臨界,將你所有可能和不可能的期許化成無(wú)數(shù)個(gè)上一頁(yè)和下一頁(yè),不要管它有多少,重要的是你相信你在點(diǎn)擊某一個(gè)鏈接之后找到你所需要的
J
我想你也找得到,因?yàn)槿澜缢杏懻摰?/span>
BlitZ++
的人都在這里
http://www.oonumerics.org/MailArchives/blitz-support/
,除去不是對(duì)
Windows
平臺(tái)感興趣的,真正討論的不會(huì)有超過(guò)
20
人,你需要找到一個(gè)叫
Julian C. Cummings
的人。
直接講我的步驟吧,互聯(lián)網(wǎng)上的故事先放在一邊吧
J
?
用法:首先去
download
Blitz-VS.NET2003.zip
(1.1M)
??????
解壓這個(gè)文件到根目錄,并且我假設(shè)你的
Blitz++ Library
是安裝在
C:\Blitz_0_6
?
如果
Blitz++
安裝目錄不是
C:\Blitz_0_6
你需要手工的調(diào)整,設(shè)置
VC.NET
項(xiàng)目文件中的
Additional Include Directories
為你的
Blitz++
安裝目錄
(cl
的
/I
參數(shù)
)
,之后
Remove C++
源文件中
globals.cpp
,重新加入你安裝目錄
\src
目錄中的這個(gè)文件,然后編譯
Solution.
另外如果你的機(jī)器象我之前一樣安裝了
STLPort
請(qǐng)?jiān)?/span>
VS.NET
中調(diào)整它的
INCLUDE
順序,將其放在默認(rèn)的
STL
庫(kù)后面。象下面這樣,如果編譯成功會(huì)在
\Blitz-VS.NET\Blitz-Library\blitz\Debug\
目錄下產(chǎn)生一個(gè)
blitz.lib
。
?
?
這個(gè)庫(kù)文件也包括你
Download
的
1.1M Zip
文件里,這樣你可以不自己編譯也能使用
Blitz++ Library.
?
?
完成這一部分之后,可以開(kāi)始使用或測(cè)試一下,
Blitz++
提供了一個(gè)
Test Suite
專門(mén)測(cè)試其功能和編譯器的情況,在
C:\Blitz-VS.NET\Blitz-Testsuite\
下面有一個(gè)
Blitz-Testsuite.sln
,打開(kāi)這個(gè)
Solution
里面有
45
個(gè)
VC Project
,專門(mén)用來(lái)運(yùn)行
C:\Blitz_0_6\testsuite
中的
.cpp
,你可以逐個(gè)編譯和運(yùn)行一下,網(wǎng)上說(shuō)其中有
4
個(gè)有問(wèn)題,而我運(yùn)行完好像只發(fā)現(xiàn)一個(gè)。由于編譯后的文件太大,所以
Download
的
Zip
文件中只帶了兩個(gè),一個(gè)是
Include
使用
Blitz++
的例子,一個(gè)是需要使用到我們編譯的
blitz.lib
的例子。總的來(lái)說(shuō),效果非常的不錯(cuò)。
?
?
后記:
??????
我只能從數(shù)據(jù)上
(81%-87%-98%)
知道以前的
VC++
的性能和情況,特別是有關(guān)
ISO C++
標(biāo)準(zhǔn)的狀況,從我的經(jīng)歷看來(lái),
Visual C++.NET 2003
兼容程度非常的高,而且速度也非常的快,編譯完成整個(gè)四個(gè)類庫(kù)和上網(wǎng)尋找資料,我總共花了兩天時(shí)間(算起來(lái)和我寫(xiě)并且發(fā)布這兩篇文章的時(shí)間差不多),兩天期間我還抽空也編譯了
PETE
、
MTL
、
POOMA
這樣小一點(diǎn)不太有名的類庫(kù),發(fā)現(xiàn)在
Visual C++.NET 2003
都可以編譯和使用。
?
事實(shí)上,目前很難找到,在一個(gè)平臺(tái),不用安裝什么其他的庫(kù)(編譯所有的類庫(kù)我沒(méi)有安裝什么
Java Runtime
、
Perl
、
Cyg-Win32
等等),第三方軟件而編譯和使用這么多頂尖類庫(kù)的編譯器。另外我們還沒(méi)有考察
Visual C++.NET
對(duì)
.NET Framework
的支持部分,所以前面我對(duì)它用了“史前最強(qiáng)大的編譯器”,豪華而且也很方便,我想如果今天
Visual C++.NET
是一個(gè)
25
歲的有志青年,我想也許他的下一目標(biāo)應(yīng)該是
Unix
或
Linux
平臺(tái)。
(
什么那就是
Visual C++.NET 2004? ?--New features for the UNIX and Linux developer and Most ANSI/ISO conformant C++.? Strong support for standard C++ in managed code
,
啊,忘記忘記
)
不管怎樣,你看得出我非常的喜歡這款
C++
編譯器,況且它還和其它的
.NET
語(yǔ)言
C#,VB.NET
在一起,即來(lái)之則用之,有時(shí)你是不得不用,有時(shí)你是因?yàn)橄矚g所以用它
J
?
好了,最后附上一些
STL
的鏈接和資源,也許你會(huì)奇怪,為什么會(huì)加這個(gè)在這里?在第一篇的文章中我曾講過(guò)寫(xiě)這個(gè)文章的原因,其實(shí)有一個(gè)很私人的原因,沒(méi)有講到,事情的最初是我想收集一些
STL
的資料,我和我的客戶都需要,不知道他們拿它作什么,而我是準(zhǔn)備鞏固和更深的學(xué)習(xí)一下
STL
,更全面的掌握一些概念和應(yīng)用,你知道
2004
的
VS.NET
中的
.NET Framework
會(huì)帶有模板和泛類編程,我說(shuō)過(guò)我是一個(gè)
.NET
迷
J
。世界上的事情就是這么奇妙,一個(gè)簡(jiǎn)單的念頭最后演化成了用
Visual C++.NET
編譯
C++
社團(tuán)的四大名庫(kù)。如果沒(méi)有什么冒犯和輕率之舉,我想整個(gè)的過(guò)程是一次非常有趣和快樂(lè)的體驗(yàn)。祝你編程快樂(lè),五一快樂(lè)。
?
?
?
STL
http://www.cs.rpi.edu/~musser/stl-book/
Effective STL
http://www.bdsoft.com/resources/estlcode.html
Effective STL -Example Source Code
http://www.bdsoft.com/resources.html
http://www.bdsoft.com/tools/stlfilt.html
STLFilt( free) An STL Error Message Decryptor for C++
http://www.oonumerics.org/blitz/download/
Bitz library
http://www.cs.auc.dk/%7Enesotto/init/
?
Pretty Good Initialization Library-C++ container initialization made easy
http://www.aristeia.com/right_frames.html
?Scott Meyers website
http://www.highprogrammer.com/alan/windev/visualstudio.html
Microsoft Visual C++ Tips and Tricks
http://www.xraylith.wisc.edu/~khan/software/stl/os_examples/examples.html
ObjectSpace STL<ToolKit> examples
http://www.infosys.tuwien.ac.at/Research/Component/tutorial/prwmain.htm
The Standard Template Library Tutorial
http://www.xraylith.wisc.edu/~khan/software/stl/os_examples/examples.html
ObjectSpace STL<ToolKit> examples ftp://butler.hpl.hp.com/stl/examples.zip
http://www.mathcs.sjsu.edu/faculty/horstman/safestl.html
?? Safe STL
http://www.synesis.com.au/winstl/libraries.html Windows Library STL /
WinSTL
http://stlport.org/
?STL Port ?
http://wwww.stlport.org
http://www.glenmccl.com/stl_cmp.htm
STL Start (1-8)
http://www.c-plusplus.de/stl.htm
STL
de
http://www.yrl.co.uk/~phil/stl/stl.htmlx
Phil Ottewell's STL Tutorial
http://www.research.att.com/~bs/C++.html
?
Bjarne Stroustrup's C++ Link ?http://www.research.att.com/~bs/homepage.html
http://www.zib.de/weiser/vtl/
View Template Library(VTL)
http://www.zeta.org.au/~jon/STL/views/doc/views.html
http://www.boost.org/
Boost C++ Libraries
http://www.ddj.com/documents/s=938/ddj9708a/9708a.htm
The SGI Standard Template Library
http://www.cs.brown.edu/people/jak/proglang/cpp/stltut/tut.html
A modest STL tutorial
http://www.medini.org/stl/
? STL Links & Quick Reference
http://www.stlbloggers.com/
STL bloggers
http://www.codeproject.com/vcpp/stl/
codeproject STL
http://users.libero.it/g.govi/index.html STL for eMbedded Visual C++
- Windows CE
http://www.cs.bham.ac.uk/resources/ums/SGI-STL/
Standard Template Library Programmer's Guide
http://www.cs.bham.ac.uk/resources/ums/SGI-STL/download.html
SGI_STL Downlaod
http://www.s34.co.jp/cpptechdoc/reference/stl_samples/
Stl Sample S34 JP
http://www.jamesd.demon.co.uk/csc/faq.html
comp.std.c++ frequently asked questions
http://www.lafstern.org/matt/
? Generic Programming and the STL (book)
http://prdownloads.sourceforge.net/dcplusplus
dc++ (
應(yīng)用
STLPort)
http://www.cs.wustl.edu/~schmidt/patterns.html
Design Patterns, Pattern Languages, and Frameworks (ACE)
http://deuce.doc.wustl.edu/Download.html
?ACE and TAO Download
http://www.cs.wustl.edu/~schmidt/ACE.html
ACE Homepage
http://www.noasia.net/taowen/
c++
網(wǎng)站
Boost
中的泛型編程技術(shù)
(
小品文
)
...
http://www.acl.lanl.gov/pooma/download.html
POOMA: Parallel Object-Oriented Methods and Applications
http://www.techxhome.com/products/optsolve/
The OptSolve++ libraries provide a convenient and extensible interface for rapid nonlinear optimization or root-finding with user-specified functions.
http://www.techxhome.com/products/optsolve/registrationpage.html
OptSolve Downlaod
http://www.acl.lanl.gov/pete/
PETE uses C++ recursively-defined templates for transforming certain kinds of C++ statements into other
http://www.osl.iu.edu/research/mtl/download.php3
The Matrix Template Library Downlaod
?
?
特別:
本文使用的
Visual Studio.NET Version 7.1.2292, .NET Framework 1.1.4322
是
Visual Studio.NET Final Bate
的版本還不是最終的版本,其結(jié)果不知是否和正式版本下有不同。
cl.exe Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.2292 for 80x86
?
本文原創(chuàng),
CSDN
署名首發(fā),所有文字和圖片版權(quán)所有。未經(jīng)授權(quán)請(qǐng)勿傳播、轉(zhuǎn)載或改編。
如果有問(wèn)題或建議,
請(qǐng)發(fā)電子郵件給
new2001@msn.com
歡迎訪問(wèn)我的
WebLog
:
www.dotNETTools.org/weblog/weblog.html
?