레이블이 visual studio인 게시물을 표시합니다. 모든 게시물 표시
레이블이 visual studio인 게시물을 표시합니다. 모든 게시물 표시

2016년 3월 15일 화요일

Visual Studio Nuget 사용

 application을 개발 할때 여러 3rd party library를 포함 하게 될 경우, visual studio 에서 설정 작업이 만만치 않은 작업 이었다.
 이것을 해결 해주는게 Nuget인데.. MS에서 Nuget을 발표한것은 vs2012 나올때 였던거 같은데.. 이제서야 사용해봤다.. 왜 진작 안썻지.ㅜ

 사용하는거는 간단하다..
솔루션에서 우클릭하고 nuget pakage 관리자를 연다음. 온라인에서 필요한 library를  검색하고 설치하면 끝.

 지금 test해보고 있는 caffe를 이용한 classfication sample code에서 opencv를 nuget으로 설치 해보았다.. 아래처럼 패키지 매니저에서 opencv 검색후 설치하였다.


 설치 후에는 아래처럼 설치된 패키지 매니저에는 설치된 패키지를 확인 할 수 있다.

 위 창에서 관리를 누르면 솔루션 내에 여러 프로젝트가 있을 경우, 프로젝트별 패키지 사용여부를 편집 할 수 있다.


 이제 원래 프로젝트 속성에서 lib 디렉터리를 넣어 주고, 추가 종속성을 넣어 주었던 부분을 빼보고 다시 컴파일 해 보았다.. opencv만 nuget 패키지를 추가 했으니 opencv 만 뺐다.



 컴파일 해보면 링크에러 없이 잘 빌드 된다.. 

 추가로 다른 패키지를 설정하다 보니, 패키지들 간에 종속성도 체크 해서, 추가하려고하는 패키지가 필요한 패키지 까지 같이 설치해준다. 아래는 boost_date_time 패키지를 설치하니 boost 를 같이 설치해주고 있다.


2016년 3월 14일 월요일

Caffe Window Visual Studio Setting

 deep learning 이 요즘 이슈이기는 하지만, 사회적으로, ai 분야에서는 10년도 더 되었지만 여전히 hot item인거 같다.. 예전예.. 한 4,5년 전쯤 Geoffrey Hinton 의 Deep Belief NN 논문http://www.cs.toronto.edu/~hinton/absps/ncfast.pdf을 보고 비슷한 Application을 만들때만 해도 Deep Learning 이라는 거는 알겠는데.. 뭔가 부족해 보였다. 기존 NN이나 SVM도 가능한거였기 때문이던거 같다..
 작년에 오랜만에 NVIDIA 컨퍼러스에 갔다가 여러 부스에서 R-CNN 단어를 여러번 듣고, 아 이게 요즘 대세 구나 라고 생각하고, 공부해봐야겠다라고 생각만 하다가, 이제서야 여유가 좀 생겨 시작 해봐야겠다.. (그렇다고.. 스마트카 만드는건 포기한건 아니고.. 만드는 과정중에.. 공부라고 생각..ㅜ)
 일단 Open Source 부터 검색해보고, 몇가지 나오는것 중에 Caffe 를 공부해보기로 했다. 공부하는 순서는 Caffe 컴파일 하고, 샘플 돌려보고, 나만의 App을 만들어보고, Caffe를 수정해보려고 한다. 여담이지만 Open Source 세상에서는 공부하기가 너무 쉽다..(쉬운건 아니고.. 공부할 자료 찾기 편한거..)
 작년만 해도 Caffe 하려면 linux 환경에서 해야하는 구나 하고 생각해서, 가상 머신 깔아해야하는 구나하고 검색좀 해보니, 선구자들께서 이미 윈도우에서 쓰려고 fork 해다가 contribute를 하고 있었다.. https://github.com/happynear/caffe-windows
 근데 워낙 핫한 아이템이다 보니 ms에서 나서서 maintenance 역할을 해주겠다고 나섰나 보다.. https://github.com/Microsoft/caffe
 일단 github에서 소스코드를 받는다. 받은 후에 안에 내용을 보면 windows 폴더가 있다. ms에서 관리하는거 답게.. windows 안에 .sln파일이 있다. 다른 커뮤니티 들은 cmake같은 프로그램으로 만들어야 하는데 개발환경이 같은 입장에서는 클릭클릭 작업이 없어져서 편하다.

 caffe-master/windows 폴더 안에 내용을 보면 Caffe.sln 파일이 있다. vs2013으로 열어서
(2015는 아직 지원안된다. caffe가 지원하지 않는건 아니고 cuda 7.5가 지원 안됨.. 이전 qt ui를 사용할때도 그랬던거 같다.) 컴파일 해보면 props ***** 에러가 날텐데. 그러면 아래처럼 파일 이름을 바꿔 주고 나서 해보면 된다.





 그 다음 컴파일을 해보면 cuda 관련 .h파일들이 없다는 에러가 난다. 나는 가상 머신에서 test 중이라 아무것도 설치가 안되어 있다. cuda 7.5를 다운로드 받아서 설치 한다. 
 그리고 나서 다시 컴파일 하면. cudnn 관련 .h 파일 없다는 에러가 남아 있다.. cudnn은 cuda 설치시 같이 설치 되지 않았다. https://developer.nvidia.com/cudnn  여기서 다운로드 받은 후에 압축을 풀고, cuda 가 설치된 경로를 찾아서 복사한다.  다시 컴파일 해보면 c2220 warning treated as error - no 'object' file generated
에러가 난다.

libcaffe 프로젝트 속성에서 경고를 오류러처리 부분을 아니요로 바꿔주고 나서 빌드해 보면 된다!!!!
 이제 좋은 샘플을 찾아 ㄱㄱ~


------------ 질문에 대한 답변 추가 --------------
error : NuGet Error:알 수 없는 명령: 'overlay'   C:\Users\elf19\Downloads\caffe-master\windows\packages\OpenCV.2.4.10\build\native\OpenCV.targets   768   5   libcaffe

패키지 버전으로 인해 위와 같은 에러들이 있는거 같은데.
제가 setting 해서 사용 하고 있는 패키지 파일입니다.

구글 드라이브 용량이 제한이 있음으로.. 몇일 동안만 링크 걸어 놓겠습니다.

2016년 1월 19일 화요일

cuda7.0 visual studio 2015 opencv3.1

 Opencv 3.1 을 cuda 포함으로, vs2015로 컴파일 할때 아래 와 같은 문제가 생긴다.
아직 모두 test해본것은 아니지만 vs2015로 cuda7.0 포함하여 컴파일 할때만 문제가 생겼다.



테스트 해 본것은 두 종류..
1. cuda 를 빼고 vs2015로 할 경우 가능.
2. cuda 6.0, 6.5 포함 vs2010으로 할 경우 가능.

2015년 12월 27일 일요일

providerpackage 패키지가 제대로 로드되지 않았습니다.

 visual studio 사용하다가 아래와 같은 오류메세지가 나올때.


Developer command prompt 실행후 아래 명령을 실행
     >>   devenv /setup


※ 주의
1. visual studio 종료후 해야함.
2. 작업관리자에서 devenv.exe 프로세스가 살아 있는지도 확인
3. command prompt 실행은 관리자 모드로
4. 실행 후 작업시간이 꽤 걸림으로 기다려야함.

2015년 7월 27일 월요일

vs2015에서 qt 사용

 vs2015가 나와서 현재 진행중인 Project를 한번 로딩해보니 아래와 같은에러가 났다.
MSC_VER : MSC컴파일러의 VER이 맞지 않는다고 나는거 같은데 현재(2015/07/27) QT 홈페이지에 가보면 MSVC2013 까지만 만들어져있다. vs2015 지원하는거는 개발자 이슈트래킹에 올라가있는것으로 봐서 조만간 나올거 같지만, 아직은 없음으로 나중에 2015를 써봐야겠다.
---------------------------------------------------------------------------------------
Error LNK2038 mismatch detected for '_MSC_VER': value '1800' doesn't match value '1900' in moc_imagelab.obj imagelab \imagelab\qtmaind.lib(qtmain_win.obj) 1

2015년 7월 3일 금요일

Qt 시작하기2 with Visual studio and Opencv

 개발 환경 : visual studio2013, qt5.4, opencv 3.0
1. 아래처럼 새프로젝트 만들기를 클릭하고 Qt5 Project를 생성한다.
 일단 sample test임으로 선택사항은 변경없이 finish


2. 프로젝트 생성후 탐색기를 보면 아래와 같이 파일들이 생겨있다.
이중 *.ui 파일을 클릭 해보면


3. qt designer 가 실행되고 dialog가 보인다.
여기에 버튼하나와 label 하나를 추가했다.

4. 아래 그림처럼 시그널/슬롯 편집버튼을 클릭하여 버튼과 다이얼로그를 연결한다.
그후에 연결설정을 클릭하여 slot에 새로운 함수(여기서는 LoadImage)를 넣는다.
5. 헤더(여기서는 qttest5.h) 파일을 열어 함수를 선언한다.
 수정부분은 검은색 표시부분




  • #ifndef QTTEST5_H
  • #define QTTEST5_H
  • #include <QtWidgets/QMainWindow>
  • #include "ui_qttest5.h"
  • class qtTest5 : public QMainWindow
  • {
  •     Q_OBJECT
  • public:
  •     qtTest5(QWidget *parent = 0);
  •     ~qtTest5();
  • private:
  •     Ui::qtTest5Class ui;
  •      private slots:
  •      void LoadImage();
  • };
  • #endif // QTTEST5_H

  • 6. cpp(여기서는 qttest5.cpp) 파일을 열어 함수를 선언한다.
     수정부분은 검은색 표시부분





  • #include "qttest5.h"
  •  #include "opencv2/opencv.hpp"
  •  using namespace cv;
  • qtTest5::qtTest5(QWidget *parent)
  •     : QMainWindow(parent)
  • {
  •     ui.setupUi(this);
  • }
  • qtTest5::~qtTest5()
  • {
  • }
  •  void qtTest5::LoadImage()
  •  {
  •      VideoCapture cap(0);
  •      Mat img;
  •      cap >> img;
  •      QImage qimg(img.data,    img.cols, img.rows, QImage::Format_RGB888);
  •      ui.label->setPixmap(QPixmap::fromImage(qimg));
  •  }

  • 컴파일 후 실행해보면 아래처럼, ui에 webcam으로 찍은 image가 display된다.




     참고사항 : opencv 빌드시 with qt를 해주어야 한다.
    현재(2015/07/09) 기준으로 opencv 3.0 을 다운로드 후 cmake로 열면 default는 with qt항목이 체크해제 되어있다. 체크 후 빌드가 필요하다. 그리고 qt 경로도 자동으로 찾지 못하였다. 아래 그림처럼 qt 경로들을 찾은후 입력 해주고 Generate를 한 후 다시 빌드해야한다.

    Qt 로 만든 릴리즈 .exe 파일에 포함할 dll

     당연한 이야기 이지만 Qt 로 만든 프로그램 배포시 정적으로 빌드하지 않았다면, dll들이 따라 다녀야 한다. 일단 설치프로그램을 이용한 배포를 만들 단계는 아니여서 필요한 dll들을 .exe 파일폴더에 같이 넣어서 배포하여 실행여부 check를 하였다.



     dll이 포함되어 있지않으면 위와 같은 에러들이 발견된다. 하나씩 찾아서 추가할 수는 없음으로 디펜던시 워커를 이용해서 필요한 dll들을 폴더 안에 넣었다.
    필요한 dll들은 아래와 같았다.

    개발한 프로그램 환경(vs2013, qt, window x86 릴리즈버전)

    - 개발한 릴리즈모드 프로그램.exe
    - icudt53.dll
    - icuin53.dll
    - icuuc53.dll
    - Qt5Core.dll
    - Qt5Gui.dll
    - Qt5Widgets.dll

    이렇게 해서 실행해보면.
    not find or load platform plugin "windows" 라는 메세지가 뜬다.


    추가로 필요한 것이 qt directory안에 plugin\platforms\ 안에 qwindows.dll 이다.
    qwindows.dll을 그대로 넣으면 않되고 platforms 폴더 통째로 넣어야한다.
    아래처럼 넣어놓고 실행해보면

    qt 및 visual studio 가 설치되지 않은 곳에서 정상 실행된다.


    2015년 6월 29일 월요일

    Qt 시작하기 with visual studio 2013

     좀 늦은 감이 있지만 크로스 컴파일이 필요한 프로젝트가 있어 Qt를 써보기로 했다. 요즘에는 IDE를 vs2013에서 지원하고 있으니, 익숙한 IDE에서 Qt의 클래스만 좀 배우면 될거 같다.

    1. 설치하기
     : 웹상에 설치하는 방법이 많이 나와있는데, online 설치는 하다가 성격 급해서 포기했다. 밤에 자고 일어 났는데, 아직도 설치 중이라는.
     : Offline 설치파일을 다운로드 받아서 설치하는게 훨씬 낳다. 다운로드하는데 약 20분정도 소요됬고 설치하는데 몇분이면 된다.
     :  공식다운로드 경로  https://www.qt.io/download-open-source/
     : 아래의 큼지막한 다운로드 버튼은 온라인 설치파일인데 그거말고 아래것을 눌러 보면 offline 설치파일이 있다.


































    : 들어가보면 여러 설치파일들이 있는데 운영체제에 맞는 SDK 를 다운받는다.
      나는 window 64를 받았다.



    : Qt Creator는 필요없다. Window Host를 설치파일에 포함되어있었다. 
    : 그리고 아래 visual studio add in 설치파일을 다운 받는다.


     : 그리고 설치 한다. 순서는 상관없겠지만, 난 SDK 설치후 ADD IN 설치했다.

    2. 잘 설치되었는지 Visual Studio를 열어본다.
     : 아래처럼 qt5가 메뉴가 보인다면 잘된것이다.


    3. Qt Options를 클릭하여 설치된 Qt 경로를 넣어준다.

















    4. dll 파일이 들어있는 경로를 환경변수 path 에 추가해준다.
     : default 설치를 했다면 C:\Qt\Qt5.4.2\5.4\msvc2013_64\bin  로 되었다.

    5. 그리고 Example 파일을 실행해본다.
     : 아래처럼 실행이 잘된다.



































    : 그리고 아래처럼 디버깅도 잘된다. qt creator 로 디버깅하는것도 괜찮지만, 그래도 익숙한 visual studio라. 이걸 쓰기로 했다.

































      아래처럼 환경변수 확인해보고 추가 안되어있으면 추가해주어야 한다.


    2014년 10월 7일 화요일

    dll 디버깅

     Visual studio에서 DLL을 디버깅할때 실행프로그램하고 연결하려면 아래와 같이 실행프로그램 경로를(.exe까지) 셋팅하면 된다.