Windows 8 64bit + VS2013/Dev C++/CodeBlocks 呼叫 GSL1.8 (通過GnuWin32)
今天找了一天各種C語言的矩陣計算庫,嘗試了直接呼叫matlab,參見前一篇文章。
最終還是決定用C語言調庫GSL來完成矩陣計算。
0.環境
Windows 8 64 bit
VS2013
最開始想要DEV C++ 來呼叫,參考了以下兩個網站,沒成功。
我參考過這個VS2010編譯GSL1.8 src/VC8.0 中自帶的solution來呼叫GSL庫的視訊:
但是最後發現沒啥用,對於我的情況不適用。還是參考了以下網址,操作起來比較簡單易懂。
1. 下載GSL-1.8.exe
安裝提示安裝即可,其實不需要src,只需要complete without source的版本就行了。
2. 生成LIB(重點)
開啟安裝目錄,例如我的是 F:\GnuWin32\lib ,檢視發現沒有lib檔案,因此需要生成lib檔案
先將lib.exe的所在目錄(vs安裝目錄下Microsoft Visual Studio \VC\bin)加入到系統/使用者環境變數path中,以便在命令列下可以執行lib
進入gsl庫的lib目錄下,windows使用者直接開啟cmd後輸入路徑即可轉到該目錄,不需要輸入CD了。
切換碟符直接輸入碟符和冒號,如D: 回車便可進入D盤的根目錄。
切換工作盤之後,再使用CD命令切換工作目錄。
兩個概念,一個是切換工作磁碟,另一個是切換某個磁碟下的工作目錄,兩者概念不同,實現命令也不同。
首先是切換工作磁碟,其命令形式是 [碟符]冒號,如要切換到D盤,則命令為D:,輸入命令後按回車鍵就可以切換到D盤的工作目錄了。
CD命令的作用確切地說就是將某個磁碟的工作目錄切換該磁碟下的另一個目錄。
依次輸入以下兩條語句:
lib /machine:i386 /def:libgsl.def
lib /machine:i386 /def:libgslcblas.def
注:如果執行這兩條命令時提示不支援lib命令或者提示無法開啟檔案,則從vs安裝vc\bin目錄下拷貝lib.exe到libgsl.def所在lib目錄。
我在拷貝lib.exe過去之後即可執行,
如果還不能執行的,可以考慮把Microsoft Visual Studio 8\Common7\IDE 裡面的spdb80.dll,mspdbcore.dll,
mspdbsrv.exe,msobj80.dll複製到上面的bin資料夾裡。
如果報錯error:cannot excute link.exe,則在命令列介面執行vc/bin下vcvars32.bat指令碼檔案,應該能順利執行lib命令。
最後能得到lib,這個就是我們的project要引入的東西。
3. 開啟VS2013新建空白的win32控制檯專案
新建原始檔,複製例子進去。
#include <stdio.h>
#include <gsl/gsl_sf_bessel.h>
int
main (void)
{
double x = 5.0;
double y = gsl_sf_bessel_J0 (x);
printf ("J0(%g) = %.18e\n", x, y);
return 0;
}
4. 配置專案的工程屬性
在Project -> Properties -> VC++ Directory-> Include Directories 中增加標頭檔案路徑(例如我的是 F:\GnuWin32\lib)。
在Project ->Properties -> VC++ Directory-> General -> Library Directories 中增加庫檔案路徑(例如我的是
F:\GnuWin32\include)。
在Project -> Properties -> Linker -> Input -> Additional Dependencies 中增加所依賴的庫檔案libgsl.lib和libgslcblas.lib。
在Project -> Properties ->C/C++->Command line 裡新增 GSL_DLL。
配置完截圖:
5.執行工程
得到正確結果,出錯了就google
ERROR:
可以嘗試的方法:把libgsl_d.dll, libgslcblas_d.dll放到工程目錄下,例如我的是:
H:\VS2013\ConsoleSolution\ConsoleApplication2\Debug
大功告成,開始C語言矩陣運算的編寫。累死我了,一天才搞定這個東西。
附錄Dev C++ 和 CodeBlocks配置GSL:
Dev C++ 配置GSL:
CodeBlocks13.10配置GSL:
參考:https://crossingmeridian.wordpress.com/2011/01/17/configuring-codeblocks-with-gsl/
進入 Setting ---> Compiler Settings ,做如下兩個地方的配置即可。