Visual Studio 2010下安装和使用blitz++指南

Visual Studio 2010下安装和使用blitz++指南

 

原文为Visual Studio 2008下安装和使用blitz++详细指南”,但经过修改后,可以推广到Visual studio 2010.

 

一.起因

安装和使用 blitz++ 时经常遇到问题,  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 中可以初步显示 .

在其他平台中的安装,需要参考解压后目录下的install文件,相关配置文件采用GNU autoconfig,文件名为configure

 

三.安装与测试

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

首先要安装最原始的代码包 , 源代码是跨平台的 , 只要 blitz 支持 .目前的最新版本是Blitz++0.10,下载地址为:

https://sourceforge.net/projects/blitz/

 解压缩 , 如到E:\技术资料\编程\c++\blitz-0.10

 

2)    安装 Blitz-VS.NET项目

如果想 blitz 能在 VS.net 下使用 , 就要定义相应的宏 , 使用相应的头文件 , lib 和 blitz++ 提供的类就行 . 而宏定义 ,Lib 的编译项目文件 , 这些工作 Julian Cummings 已经为我们做好 . 在 以上网址:

https://sourceforge.net/projects/blitz/

中下载的源代码中包含有Blitz-VS.NET.zip

 

将 Blitz-VS2010.zip 解压缩 , 它的主目录与 E:\技术资料\编程\c++\blitz-0.10相同 , 我们假设它为

 E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010

 

E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\blitz\ms里面是bzconfig.h, 它定义了 blitz 相关的宏变量 , 如 BZ_HAVE_COMPLEX, BZ_HAVE_STL 等等 , 这是每个项目必须用到的 .

 

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

 

3)    生成 blitz.lib

使用 Visual Studio打开为 E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\blitz\ blitz.vcxproj, 如上所述 , 我们正是用这个项目来产生 blitz.lib 的 . 它所使用的源文件就是E:\技术资料\编程\c++\blitz-0.10\src\globals.cpp, 因为代码原作者为了保持代码的唯一份 , 所以没有包括到这个 for vs.net 的压缩包中 , 你要将原 Blitz++ 目录下的 src 目录拷贝到这里 . 如将E:\技术资料\编程\c++\blitz-0.10\src  拷贝到 E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\src

Vs2010中,需要右键点击项目名称,在属性—>配置属性—>vc++包含目录,添加E:\技术资料\编程\c++\blitz-0.10E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010

     编译生成 blitz.lib. 在 DEBUG 或 release 目录下已经生成了我们所需的文件 ,debug 版本的为E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\blitz\lib\Win32\ blitz_d.lib, release 版本的为 E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\blitz\Win32\Debug\blitz.lib.

 

4 编译和测试 blitz-testsuit

Visual Studio打开 E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\Blitz-Library.sln, 里面包括了 54 个测试用例 

E:\技术资料\编程\c++\blitz-0.10下的 testsuite 目录拷贝到 E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010 原因也是为了保持代码的唯一性 , 据作者所说

拷贝E:\技术资料\编程\c++\blitz-0.10\blitzE:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010,这是添加头文件。

确定项目选项输入库为 blitz_d.lib 或 blitz.lib(一般是这样子的)

编译 , 执行 . 

 

四.在自己的项目中使用

一个很简单的例子 ,

新建个人项目后 ,添加 lib 或正确配置了 lib 的路径 : 将 blitz.lib 拷贝到项目下或在项目属性中配置好库目录;同时配置包含目录。如:包含目录为: E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010,库目录为:E:\技术资料\编程\c++\blitz-0.10\Blitz-VS2010\blitz\lib\Win32

 

#include <blitz/bzconfig.h>

#include <blitz/array.h>

 

BZ_USING_NAMESPACE(blitz)

 

int main(int argc, char* argv[])

{

    complex<int> c(4,8);

    cout << c << endl;

 

    Array<int,2> ar(2,2) ;

    ar =1,1,

        2,2;

    cout << ar << endl;

    Array<double,2> A(3,3);

    A = 1.7,3.5,4.8,

        2.6,7.8,9.1,

        3.8,8.9,10.3;

    cout<<A<<endl;

cin.get();

return 0;

}

 

在编译时 , 各种配置都要非常小心 , 一不小心就会出错 , 按照以上的步骤一步一步来 , 应该不会有太大的错误 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值