1. 下载生成 lib文件
http://gnuwin32.sourceforge.net/packages/gsl.htm
下载Sources安装后发现,里面有做好的vc8的解决方案。打开libgsl.sln然后重新编译一下libgsl和libgslcblas即可。生成的lib和dll文件在vc6.0和vc8.0下都能使用。呵呵在自己工程的预处理器里不要忘了加GSL_DLL。
直接下载Complete package, except sources发现没有lib文件只有.a文件,有网友说用vc6.0自带的1ib.exe转换一下即可
lib.exe /machine:i386 /def:libgsl.def
lib.exe /machine:i386 /def:libgslcblas.def
- #include <stdio.h>
- #include <gsl/gsl_fit.h>
- #pragma comment(lib, "libgsl_d.lib")
- #pragma comment(lib, "libgslcblas_d.lib")
- int
- main (void)
- {
- int i, n = 4;
- double x[4] = { 1970, 1980, 1990, 2000 };
- double y[4] = { 12, 11, 14, 13 };
- double w[4] = { 0.1, 0.2, 0.3, 0.4 };
- double c0, c1, cov00, cov01, cov11, chisq;
- gsl_fit_wlinear (x, 1, w, 1, y, 1, n,
- &c0, &c1, &cov00, &cov01, &cov11,
- &chisq);
- printf ("# best fit: Y = %g + %g X\n", c0, c1);
- printf ("# covariance matrix:\n");
- printf ("# [ %g, %g\n# %g, %g]\n",
- cov00, cov01, cov01, cov11);
- printf ("# chisq = %g\n", chisq);
- for (i = 0; i < n; i++)
- printf ("data: %g %g %g\n",
- x[i], y[i], 1/sqrt(w[i]));
- printf ("\n");
- for (i = -30; i < 130; i++)
- {
- double xf = x[0] + (i/100.0) * (x[n-1] - x[0]);
- double yf, yf_err;
- gsl_fit_linear_est (xf,
- c0, c1,
- cov00, cov01, cov11,
- &yf, &yf_err);
- printf ("fit: %g %g\n", xf, yf);
- printf ("hi : %g %g\n", xf, yf + yf_err);
- printf ("lo : %g %g\n", xf, yf - yf_err);
- }
- return 0;
- }