VC.NET2003下安装和使用BLITZ++详细指南

类别:编程语言 点击:0 评论:0 推荐:

@author:armylau

@date:2004-8-12

 

一.起因

安装和使用blitz++时经常遇到问,查看了ccboy写的《VC++ _NET 2003 –安装和使用Boost 1_30和Blitz++0_6 》,但他写的不详细, Blitz的官方文档也不清楚, 只好自己来, 花了不少时间才初步弄清楚。

 

二.Blitz简介

大家知道Fortran是公认的科学计算编程语言,大量数值计算库都是基于fortran的,如lapack. 而blitz++则为科学计算人员提供了面向对象的C++的数值计算程序库, 速度能与fortran77/90匹配.

    用过matlab的人知道, matlab是一种基于矩阵的第四代语言,它将每个变量都视作矩阵,赋值起来比起c/c++/java等主流语言起来非常方便,而blitz++也提供了这种矩阵的强大操作,而且性能比起matlab要快很多,这是因为两种的语言特性所决定的.

    Blitz++最新的版本中提供了数组和向量(即矩阵),随机数产生器,小向量和矩阵.

    值得注意的是,与其它数值计算包相比较, blitz是非常有个性的,它不求高大全,如它并没有提供所有的矩阵操作功能,如求特征向量,FFT分析等.它的特点在于面向对象、数组操作语法和模板操作(But the main focus of blitz is on array syntax and stencil operations)[4]。矩阵操作功能,想起STL中的VALARRY了吗?VALARRAY中的功能这里都实现和加强了。这个在测试项目MT1中可以初步显示.

 

三.安装与测试

1)    安装Blitz++-0.7通用代码

首先要安装最原始的代码包,源代码是跨平台的,只要blitz支持.

在http://www.oonumerics.org/blitz/ 下只有0.6版本的,最新的版本是0.7,在http://sourceforge.net/project/showfiles.php?group_id=63961 .解压缩,如到C:\vc\Blitz++-0.7\

 

2)    安装Blitz-VS.NET1.5 -FOR vs.net2003项目

如果想blitz能在VS.net下使用, 就要定义相应的宏, 使用相应的头文件, lib和blitz++提供的类就行. 而宏定义,Lib的编译项目文件,这些工作Julian Cummings已经为我们做好.在blitz++的主页上查看supported platforms,看到blitz for vs.net,循提示去到blitz在sourceforge的cvs下查找,在cvs目录下 http://cvs.sourceforge.net/viewcvs.py/blitz/blitz , 下载两个文件: Blitz-VS.NET.zip和README-VS.NET.txt,我下载时的这两个文件的最新版本分别是1.6和1.1

 

 

将blitz-VS.NET zip解压缩,它的主目录与C:\vc\Blitz++-0.7的相同,我们假设它为C:\vc\Blitz-VS.NET1.6,目录结构如下:

Blitz\

Blitz-Testsuite\

Blitz-Library.ncb

Blitz-Library.sln

Blitz-Library.suo

 

blitz\里面是config.h, 它定义了blitz相关的宏变量, 如BZ_HAVE_COMPLEX, BZ_HAVE_STL等等, 这是每个项目必须用到的.

 

blitz目录里面还有一个VC项目文件, 这个项目是用来生成blitz.lib文件的, 稍后我们将提到如何设置生成。

 

3)    生成blitz.lib

启动vs.net2003,设置: 工具->选项->项目->VC++目录, 在”包含文件”中添加blitz-0.7的路径 (即cl中的 /I 参数),如C:\vc\blitz。 下图为我的配置

 

 

使用vs.net2003打开为C:\vc\Blitz-VS.NET1.6\blitz\ blitz.vcproj,如上所述,我们正是用这个项目来产生blitz.lib的.它所使用的源文件就是Blitz++-0.7\src\globals.cpp, 因为代码原作者为了保持代码的唯一份,所以没有包括到这个for vs.net的压缩包中, 你要将原Blitz++目录下的src目录拷贝到这里.如将C:\vc\Blitz++-0.7\src拷贝到 C:\vc\Blitz-VS.NET1.6\src

    编译生成blitz.lib.编译时会出现错误提示,如error PRJ0019:工具从”copying blitz_d.lib..”不必理会,这是blitz的BUG,在DEBUG或release目录下已经生成了我们所需的文件,debug版本的为blitz_d.lib, release版本的为blitz.lib.

    此时,为了以后的版本都能使用此lib文件,我们可以配置一下全局选项:

首先在\Blitz-VS.NET1.6\下新建一lib目录,将blitz.lib和blitz_d.lib拷贝进去. 在工具->选项->项目->VC++目录->库文件下添加我们lib的路径

 

 

 

4) 编译和测试blitz-testsuit

用vs.net2003打开Blitz-Library.sln, 里面包括了54个测试用例.

将Blitz++-0.7下的testsuite目录拷贝到Blitz-VS.NET1.6,原因也是为了保持代码的唯一性,据作者所说[4].

要确认这点, 可以打开项目配置文件vsproj,用文本编辑器如notepad打开, 查看

<Files>

       <Filter

           Name="Source Files"

           Filter="cpp;c;cxx;def;odl;idl;hpj;bat;asm">

           <File

              RelativePath="..\..\testsuite\ctors.cpp"> 

           </File>

       </Filter>

    </Files>

 

本文地址:http://com.8s8s.com/it/it28656.htm