OpenCV/OpenCV 강좌

Visual Studio 2022에서 GSL(GNU Scientific Library) 사용하기

webnautes 2023. 10. 17. 22:30
반응형

Visual Studio 2022를 위해 미리 컴파일된 GSL 라이브러리를 사용해본 결과입니다..

 

2019.3.21 최초작성 Visual Studio 2017 사용

2022.2.25 최종작성 Visual Studio 2022 사용

 

 

GNU 공식 홈페이지(https://www.gnu.org/software/gsl/ )에서는 소스 코드 패키지만 배포하고 있기 때문에   사용하려면 플랫폼에 맞추어 컴파일 하는 작업이 필요합니다.

 

다행스럽게도 찾아보면 윈도우에서 많이 사용되는  Visual Studio, MinGW등을 위해 컴파일한 결과물인 바이너리 패키지를 배포하는 분들이 있습니다. 

이번에도 찾아보니 몇군데 있었지만 아래 링크에 Visual Studio 2017 64비트 버전을 위해 빌드된 GSL   라이브러리가 있어서 사용해보았습니다. 

 

다시 진행해보면서 Visual Studio 2022에서 진행했습니다.



C/C++ libraries for Windows

https://www.bruot.org/hp/libraries/



리눅스에서는 필요한 패키지들을 쉽게 설치할 수 있어 비교적 쉽게 진행할 수 있지만 윈도우에서 하려면 의존성이 있는 라이브러리들을 일일이  찾아 다운로드 받아 빌드해줘야 합니다. 

그래서 보통 바이너리 패키지를 찾게 되네요..

물론 최신버전이 필요한 경우나 빌드 옵션을 바꿔야 하는 경우에는 어쩔 수 없이 컴파일을 해줘야 합니다.



1. Visual Studio 2017용으로 배포된 gsl_2_2_msvc2017_64.zip 파일을 다운로드합니다.

 

 



2. 압축을 풀어 생성된 폴더의 이름을 gsl로 변경합니다. 이후 다음 경로 상에 있는 파일들을 사용해야 합니다. 

 



3. 새 프로젝트 만들기를 클릭합니다. 

 



왼쪽 위 항목을 C++로 변경하고 Windows 데스크톱 마법사를 선택합니다. 이제 다음을 클릭합니다.



프로젝트 이름을 적고 만들기를 클릭합니다. 

 



애플리케이션 종류로 콘솔 애플리케이션을 선택하고 추가 옵션에서 빈 프로젝트를 클릭합니다. 확인을 클릭합니다. 



4. 솔루션 탐색기에서 소스 파일을 선택하고 마우스 오른쪽 버튼을 눌러서 메뉴에서 추가 > 새 항목을 선택합니다. 

 



추가할 파일 이름을 적어주고 추가를 클릭합니다.

 



프로젝트에 소스 파일이 추가되었습니다. 

 




5. GSL 메뉴얼에 있는 코드 중 Linear Least-Squares Fitting 예제를  cpp 파일에 붙여넣어 태스트를 진행해보겠습니다. 

 

Visual Studio에서 다음 코드를 사용하려면 헤더파일(.h) 위치와 라이브러리(.lib) 파일 위치 및 사용할 라이브러리 지정을 해줘야 합니다.

 

출처는 아래 링크입니다.

https://www.gnu.org/software/gsl/manual/html_node/Fitting-linear-regression-example.html#Fitting-linear-regression-example 



#include <stdio.h>
#include <gsl/gsl_fit.h>

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;
}



6.  툴바의 솔루션 플랫폼이 x64인지 확인합니다. 

 



7.메뉴에서 프로젝트 > 속성을 선택합니다.

 



구성을 모든 구성으로 변경합니다. 

 



왼쪽에 보이는 항목중에 C/C++을 선택하고 추가 포함 디렉토리 항목에  c:\gsl\include를 입력합니다. 

 




8.  왼쪽에 보이는 항목 중에 링커를 선택합니다. 추가 라이브러리 디렉토리를 선택하고 C:\gsl\lib\gsl를 입력합니다. 

 



9. 왼쪽 항목에서 링커 > 입력을 선택하고 추가 종속성 항목에 gsl.lib;cblas.lib;를 추가합니다. 

이제 확인 버튼을 클릭하여 속성 페이지 창을 닫습니다. 

 



10. 이제 Ctrl + F5를 눌러서 실행시켜 보면 다음처럼 실행결과를 볼 수 있습니다. 

 




반응형