???? 我做圖像處理經(jīng)常要用到矩陣運(yùn)算,最常用到的工具就是matlab。不過matlab也就只能用在實(shí)驗(yàn),真正做程序的時(shí)候,好多東西都要自己寫,很麻煩。在網(wǎng)上搜了一下科學(xué)計(jì)算庫(kù),找到了三個(gè),gsl、blitz++和MTL,沒時(shí)間仔細(xì)研究哪個(gè)效率更高了,聽了Oscargreat的推薦,開始用blitz++。
??????blitz++的代碼下載下來發(fā)現(xiàn),只是適合linux下編譯,幸好在網(wǎng)上搜到了幾篇不錯(cuò)的文檔,在其指導(dǎo)下順利的編譯了blitz.lib。
????? 按照文檔所述,編譯blitz.lib和運(yùn)行測(cè)試程序,都不會(huì)有問題。不過,我在嘗試把blitz庫(kù)用到自己的程序時(shí),有了一些問題.
?????建了一個(gè)MFC應(yīng)用程序,代碼如下:
#include stdafx.h"
#include "config.h"
#include <blitz/array.h>
using namespace blitz;
...
????? 這樣會(huì)報(bào)錯(cuò)。和Oscargreat分析了一會(huì),發(fā)現(xiàn)是MFC和blitz沖突了,MFC居然把min和max用宏定義了(windef.h),這樣和blitz里的min和max沖突,暫時(shí)的解決辦法是用#undef在前面屏蔽掉min和max,以后再找其他的辦法吧。
????? 還有就是blitz由于是C++ template庫(kù),所以,有很多情況下的應(yīng)用是不需要鏈接blitz.lib的,但是最好還是鏈接上,因?yàn)閎litz源文件里還是有一些cpp的。