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



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


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

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


C/C++ libraries for Windows

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



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

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

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




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





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





3. 새로운 프로젝트를 생성하기 위해 메뉴에서 파일 > 새로 만들기 > 프로젝트를 선택합니다.

왼쪽 항목에서 Windows 데스크톱을 선택하고 오른쪽 항목에서 Windows 데스크톱 마법사를 선택합니다.

이름 항목에 프로젝트 이름을 적습니다.





빈 프로젝트를 체크하고 SDL을 체크해제하고 확인 버튼을 클릭합니다.





4. 2번에서 확인했던 include 폴더와 lib 폴더를 Visual Studio 프로젝트 폴더로 복사해옵니다.

프로젝트 폴더 안 에 존재하는  같은 이름의 폴더 안에 넣어줘야 합니다.





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





C++ 파일을 선택하고 이름 항목에 파일 이름을 적고 추가 버튼을 클릭합니다.





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





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




7.  툴바의 솔루션 플랫폼을 x64로 변경합니다.





메뉴에서 프로젝트 > 속성을 선택하고  구성을 모든 구성으로 변경합니다.




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





8.  왼쪽에 보이는 항목 중에 링커를 선택합니다.

추가 라이브러리 디렉토리를 선택하고  .\lib\gsl\를 입력합니다.





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

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





10. 실행시켜 보면 다음처럼 실행결과를 볼 수 있습니다.





포스트 작성시에는 문제 없었지만 이후 문제가 생길 수 있습니다.
댓글로 알려주시면 빠른 시일내에 답변을 드리겠습니다.

여러분의 응원으로 좋은 컨텐츠가 만들어집니다.
지금 본 내용이 도움이 되었다면 유튜브 구독 부탁드립니다. 감사합니다 : )

유튜브 구독하기

  1. dbs5421 2019.05.01 20:14

    1>LINK : warning LNK4098: 'MSVCRT' defaultlib가 다른 라이브러리와 충돌합니다. /NODEFAULTLIB:library를 사용하십시오.
    1>gsl.lib(linear.obj) : warning LNK4099: 'gsl.pdb' PDB를 'gsl.lib(linear.obj)' 또는 'C:\Users\rtc\Desktop\StraightLane\x64\Debug\gsl.pdb'에서 찾을 수 없습니다. 디버그 정보가 없는 것처럼 개체를 링크합니다.

    실행은 되지만 이와같은 경고가 발생합니다. 무시해도 되나요?

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.01 20:27 신고

      실행하는데 문제 없는 경고인 경우에는 무시해도 됩니다.

    • dbs5421 2019.05.01 20:55

      감사합니다. 조별과제 중인데 많이 배워갑니다^^ 꾸벅

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.05.01 21:18 신고

      감사합니다 : )

  2. broseo 2019.06.05 17:54

    위에 포스트 내용대로 설정을 하고 차선인식에 대한 포스팅 내용(https://webnautes.tistory.com/1244)인 전체 오픈소스를 끌어와 쓰면 되는건가요??

  3. sun 2019.07.19 19:12

    헤더파일 소스는 어디에 있나요 ㅠㅠ홈페이지 들어가도 못찾겟어요

    • Favicon of https://webnautes.tistory.com BlogIcon webnautes 2019.07.19 19:19 신고

      gsl 라이브러리의 압축파일을 다운로드 받으면 될듯합니다.

      어떤 헤더파일 소스를 찾는 건가요?

  4. Favicon of https://yjoo0913.tistory.com BlogIcon Young_s_place 2020.01.13 18:07 신고

    VS2019에서는 2017 파일을 사용해도 문제 없을까요?

+ Recent posts