小气的神
2003-05-01
Article Type: In-Depth
难度等级:
7/9
版本:
1.82
“C++ increasingly means Visual C++”
- Scott Meyers
<
文章的长度把握不是太好,被
CSDN
的系统裁减,所以接着再来
J
>
接下来,我们需要编写一些小的应用测试一下,简单一点的
lexical_case
:
取自
http://www.emaki.minidns.net/Programming/tools/Boost/
的例子
使用下面的命令方式。
D:\boost2> cl /GX /MT /GR /EHsc lCase.cpp
复杂一点的多线程应用使用下面的命令方式:
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)
,当然在测试的过程中也有上面我说的
VC7.1
无法编译过去的问题:
比如取自
http://www.emaki.minidns.net/Programming/tools/Boost/
的
format
例子
还有一些例子是无法编译或是有让人难以理解的警告。
具体记录在下面的两个页面中,你可以具体查看一下,不仅
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/
接下来,还有接下来了吗?回头看看我们的已经走了很远了,但愿你用同样的步伐在和我一起前进,最后我们来一起看一下
Biltz++
吧,我已经没有力气在畅情漪动的介绍有关
Biltz
的有关故事和历史了。必须承认这些类库都是老字号的招牌类库,是
C++
社团的辉煌、是激情创造力的溢出,就这些足以让
.NET
学一阵跟一程了
.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/
上的描述差点昏倒,
Visual C++
排在了
Unsupported platforms
之中,甚至连第二等的
Plausible (but not actively supported) platforms
都排不上,这意味着什么,也就是你解压
Blitz-06.tar.gz
之后,根本不会在其中找到有关
Visual C++
的编译文件和任何有关的信息。
这就是
ISO/ANSI C++
的厉害了,对于我这样一个慕名而来,之前从未使用过任何其它版本的
Blitz++
的
Visual Studio.NET
用户来说,这有些困难了,所以这时候讲
VC++.NET
强大优秀,一点用都没有,我们需要的是资源是信息,而不是手上拿着史前最强大的编译器。还好有网络,还好有
Google
,
Google
的伟大之处在于它能给你无比自信的不知所措寻找一个释放的临界,将你所有可能和不可能的期许化成无数个上一页和下一页,不要管它有多少,重要的是你相信你在点击某一个链接之后找到你所需要的
J
我想你也找得到,因为全世界所有讨论的
BlitZ++
的人都在这里
http://www.oonumerics.org/MailArchives/blitz-support/
,除去不是对
Windows
平台感兴趣的,真正讨论的不会有超过
20
人,你需要找到一个叫
Julian C. Cummings
的人。
直接讲我的步骤吧,互联网上的故事先放在一边吧
J
用法:首先去
download
Blitz-VS.NET2003.zip
(1.1M)
解压这个文件到根目录,并且我假设你的
Blitz++ Library
是安装在
C:\Blitz_0_6
如果
Blitz++
安装目录不是
C:\Blitz_0_6
你需要手工的调整,设置
VC.NET
项目文件中的
Additional Include Directories
为你的
Blitz++
安装目录
(cl
的
/I
参数
)
,之后
Remove C++
源文件中
globals.cpp
,重新加入你安装目录
\src
目录中的这个文件,然后编译
Solution.
另外如果你的机器象我之前一样安装了
STLPort
请在
VS.NET
中调整它的
INCLUDE
顺序,将其放在默认的
STL
库后面。象下面这样,如果编译成功会在
\Blitz-VS.NET\Blitz-Library\blitz\Debug\
目录下产生一个
blitz.lib
。
这个库文件也包括你
Download
的
1.1M Zip
文件里,这样你可以不自己编译也能使用
Blitz++ Library.
完成这一部分之后,可以开始使用或测试一下,
Blitz++
提供了一个
Test Suite
专门测试其功能和编译器的情况,在
C:\Blitz-VS.NET\Blitz-Testsuite\
下面有一个
Blitz-Testsuite.sln
,打开这个
Solution
里面有
45
个
VC Project
,专门用来运行
C:\Blitz_0_6\testsuite
中的
.cpp
,你可以逐个编译和运行一下,网上说其中有
4
个有问题,而我运行完好像只发现一个。由于编译后的文件太大,所以
Download
的
Zip
文件中只带了两个,一个是
Include
使用
Blitz++
的例子,一个是需要使用到我们编译的
blitz.lib
的例子。总的来说,效果非常的不错。
后记:
我只能从数据上
(81%-87%-98%)
知道以前的
VC++
的性能和情况,特别是有关
ISO C++
标准的状况,从我的经历看来,
Visual C++.NET 2003
兼容程度非常的高,而且速度也非常的快,编译完成整个四个类库和上网寻找资料,我总共花了两天时间(算起来和我写并且发布这两篇文章的时间差不多),两天期间我还抽空也编译了
PETE
、
MTL
、
POOMA
这样小一点不太有名的类库,发现在
Visual C++.NET 2003
都可以编译和使用。
事实上,目前很难找到,在一个平台,不用安装什么其他的库(编译所有的类库我没有安装什么
Java Runtime
、
Perl
、
Cyg-Win32
等等),第三方软件而编译和使用这么多顶尖类库的编译器。另外我们还没有考察
Visual C++.NET
对
.NET Framework
的支持部分,所以前面我对它用了“史前最强大的编译器”,豪华而且也很方便,我想如果今天
Visual C++.NET
是一个
25
岁的有志青年,我想也许他的下一目标应该是
Unix
或
Linux
平台。
(
什么那就是
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
语言
C#,VB.NET
在一起,即来之则用之,有时你是不得不用,有时你是因为喜欢所以用它
J
好了,最后附上一些
STL
的链接和资源,也许你会奇怪,为什么会加这个在这里?在第一篇的文章中我曾讲过写这个文章的原因,其实有一个很私人的原因,没有讲到,事情的最初是我想收集一些
STL
的资料,我和我的客户都需要,不知道他们拿它作什么,而我是准备巩固和更深的学习一下
STL
,更全面的掌握一些概念和应用,你知道
2004
的
VS.NET
中的
.NET Framework
会带有模板和泛类编程,我说过我是一个
.NET
迷
J
。世界上的事情就是这么奇妙,一个简单的念头最后演化成了用
Visual C++.NET
编译
C++
社团的四大名库。如果没有什么冒犯和轻率之举,我想整个的过程是一次非常有趣和快乐的体验。祝你编程快乐,五一快乐。
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++ (
应用
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++
网站
Boost
中的泛型编程技术
(
小品文
)
...
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
的版本还不是最终的版本,其结果不知是否和正式版本下有不同。
cl.exe Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.2292 for 80x86
本文原创,
CSDN
署名首发,所有文字和图片版权所有。未经授权请勿传播、转载或改编。
如果有问题或建议,
请发电子邮件给
new2001@msn.com
欢迎访问我的
WebLog
:
www.dotNETTools.org/weblog/weblog.html