'IT-개발/좋은 Library'에 해당되는 글 4건

  1. 2016.08.25 wxwidget - 설치 (펌)
  2. 2016.08.24 WXWIDGET (펌)
  3. 2016.08.24 Api - Hooking - EasyHook (펌)
  4. 2016.08.24 Boost 설치 (펌) - 기타링크
posted by 갱우덩 2016. 8. 25. 15:01

라이브러리에 대해서 언급만 하고 Build해서 사용하는거는 함도 안해봤네요.


소개합니다~~ (펌)...!!! ㅋㅋㅋ 저두 남이 빌드해놓은거 카피해서 사용만 하고 있습니다.


담에 함 빌드해서 써봐야겠죠~


펌 : http://egloos.zum.com/dstein/v/2864277



Microsoft Visual C++ 2010 환경에서 wxWidgets 사용하기

1. 준비 사항

2. 컴파일

다운로드 받은 wxWidgets 소스 압축 파일을 원하는 디렉터리에 압축해제 한다. 
이 문서에서는 c:\wxWidgets-2.9.2 에 압축을 해제 한 것으로 하여 진행하겠습니다.

2.1 옵션

  • Makefile 옵션 

    옵션

    설명

    SHARED=0정적 라이브러리로 빌드(lib)
    SHARED=1동적 라이브러리로 빌드(dll)
    UNICODE=1유니코드
    BUILD=debug디버그 모드
    BUILD=release릴리즈 모드
    RUNTIME_LIBS=static정적 런타임 라이브러리
    RUNTIME_LIBS=dynamic동적 런타임 라이브러리
  • VC++의 런타임 라이브러리 설정에 따른 적합한 RUNTIME_LIBS 

    Runtime Library name

    Switch

    CRT library file

    Macro(s) Defined

    wxWidgets options

    Description

    Multithreaded

    /MT

    LIBCMT.lib

    _MT

    RUNTIME_LIBS=static BUILD=release

    release static

    Multithreaded Debug

    /MTd

    LIBCMTD.lib

    _MT _DEBUG

    RUNTIME_LIBS=static BUILD=debug

    debug static

    Multithreaded DLL

    /MD

    MSVCRT.lib

    _MT _DLL

    RUNTIME_LIBS=dynamic BUILD=release

    release dynamic

    Multithreaded Debug DLL

    /MDd

    MSVCRTD.lib

    _MT _DEBUG _DLL

    RUNTIME_LIBS=dynamic BUILD=debug

    debug dynamic

2.2 컴파일

위의 옵션 값을 참고하여 각자 원하는 옵션으로 컴파일 하면 된다. 여기에선 다음과 같은 옵션으로 컴파일 한다.

  • Win32 컴파일  
    1. Visual studio x86 명령 프롬프트 실행
  • 2. make 파일 위치로 이동 
    wxWidgets 설치 경로 아래에 있는 \build\msw 로 이동 
    3. nmake 실행 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=release clean 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=release 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=debug clean 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=debug 
    4. 결과물 
    wxWidgets 설치 경로 아래에 있는 \lib 폴더에 결과물이 생성된다.  

  • - 빌드 옵션별 결과물 경로 

    경로

    옵션

    lib\vc_dll\mswuSHARED=1, UNICODE=1, BUILD=release
    lib\vc_dll\mswudSHARED=1, UNICODE=1, BUILD=debug
    lib\vc_lib\mswSHARED=0, UNICODE=1, BUILD=release
    lib\vc_lib\mswdSHARED=0, UNICODE=1, BUILD=debug
  • x64 컴파일 
    1. Visual studio x64 명령 프롬프트 실행   

    2. make 파일 위치로 이동 
    wxWidgets 설치 경로 아래에 있는 \build\msw 로 이동 
    3. nmake 실행 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=release TARGET_CPU=amd64 clean 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=release TARGET_CPU=amd64 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=debug TARGET_CPU=amd64 clean 
    nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=debug TARGET_CPU=amd64 
    4. 결과물 
    wxWidgets 설치 경로 아래에 있는 \lib 폴더에 결과물이 생성된다.  

    - 빌드 옵션별 결과물 경로 

    경로

    옵션

    lib\vc_amd64_dll\mswuSHARED=1, UNICODE=1, BUILD=release
    lib\vc_amd64_dll\mswudSHARED=1, UNICODE=1, BUILD=debug
    lib\vc_amd64_lib\mswSHARED=0, UNICODE=1, BUILD=release
    lib\vc_amd64_lib\mswdSHARED=0, UNICODE=1, BUILD=debug

2.3 Sample 소스 컴파일

wxWidgets 설치 경로 아래에 있는 \samples 폴더에 예제 소스들이 존재합니다. 이 예제들을 컴파일 해서 실행해보길 원할 경우 아래와 같이 하면 됩니다.

  • 예로 \samples\control 예제를 컴파일 하는 경우 
    1. \samples\control 폴더로 이동 
    2. nmake -f makefile.vc SHARED=1 UNICODE=1 RUNTIME_LIBS=dynamic BUILD=release 실행 
    컴파일 옵션은 위에 내용을 참고하여 원하는 값으로 설정하면 됩니다. 
    3. 위와 같이 컴파일 한 경우 결과물은 \samples\control\vc_mswdll 폴더에 생성됩니다.

3. 개발 환경

3.1 시스템 환경 변수 등록

wxWidgts 설치 경로를 환경변수 WXWIN 이름으로 등록한다.


3.2 프로젝트 속성 설정

  • C/C++ 
    * 일반 
       * 추가 포함 디렉터리 
            * $(WXWIN)\include - wxWidgets include 디렉터리 위치  
            * $(WXWIN)\include\msvc - 빌드 명세파일인 setup.h 파일을 포함하는 디렉터리 위치 
    * 전처리기 
        * 전처리기 정의 
            * WIN32 - 필수 항목  
            * __WXMSW__ - 필수 항목 
            * _WINDOWS - 필수 항목 
            * WXUSINGDLL - 정적 빌드 대신 DLL 을 사용하여 컴파일하는 경우 
            * wxUSE_GUI=1 - 프로젝트에서 GUI 컴포넌트를 사용하는 경우(선택 항목) 
            * _UNICODE - 유니코드를 사용하는 경우 
            * _DEBUG - 디버그 활성화 
            * __WXDEBUG__ - wxWidgets의 디버그 기능을 사용하는 경우 
            * _CRT_SECURE_NO_DEPRECATE - 다음과 같은 경고가 표시되지 않게 하길 원할 경우 "This function or variable may be unsafe. Consider using <alternative> instead." warnings. 
            * _CRT_NONSTDC_NO_DEPRECATE - 다른 경고들이 표지되지 않게 한다.
  • 링커 
    * 일반 
        * 추가 라이브러리 디렉터리 
            * $(WXWIN)\lib\vc_lib - x86 정적 라이브러리를 사용하는 경우 
            * $(WXWIN)\lib\vc_dll - x86 동적 라이브러리를 사용하는 경우 
            * $(WXWIN)\lib\vc_amd64_lib - x64 정적 라이브러리를 사용하는 경우 
            * $(WXWIN)\lib\vc_amd64_dll - x64 동적 라이브러리를 사용하는 경우 
    * 입력 
        * 추가 종속성 
            * wxmsw29[ud]_core.lib wxbase29[ud].lib - wxWidgets 핵심 라이브러리 
            * comctl32.lib rpcrt4.lib winmm.lib advapi32.lib wsock32.lib - wxWidgets 에서 필요로하는 라이브러리 
            * wxpng[ud].lib wxzlib[ud].lib wxjpeg[ud].lib wxtiff[ud].lib  - wxWidgets 에서 지원하는 라이브러리 (선택 항목)
  • 리소스 
    * 일반 
        * 추가 포함 디렉터리 
            * $(WXWIN)\include - wxWidgets include 디렉터리 위치 

    3.3 추가 작업

    • 리소스 파일 추가 
      * wxWidgets 내부에서 사용하는 리소스를 프로젝트에 추가하여 한다. 
          * 추가 방법 
              * 확장자가 .rc 파일이 텍스트 파일을 생성한다 
              * 생성한 파일에 #define wxUSE_NO_MANIFEST 1 을 추가 한다.
              * 생성한 파일에 #include <wx/msw/wx.rc> 을 추가하고 저장한다. 
              * 이 파일을 프로젝트에 추가한다. 


    'IT-개발 > 좋은 Library' 카테고리의 다른 글

    WXWIDGET (펌)  (0) 2016.08.24
    Api - Hooking - EasyHook (펌)  (0) 2016.08.24
    Boost 설치 (펌) - 기타링크  (0) 2016.08.24
    posted by 갱우덩 2016. 8. 24. 18:25


    http://kshbrain.egloos.com/9500139 (펌)


    wxWidgets는 GUI 프레임 워크를 제공해주는 라이브러리이다.


    QT와 달리 유명하지는 않지만, wxWidget을 사용하는 응용 프로그램이 증가하고 있는 추세이다.
    PS2 에뮬레이터 PCSX2에서 사용된 GUI 프레임워크 라이브러리로, PCSX2 빌드하면서 알게 되었다.

    개인적으로 생각하는 장점이다.

    1. 오픈 소스 라이브러리이다.

    - QT 5.3의 경우, License Free와 Commercial License가 존재하지만, wxWidgets은 LGPL Licence를 따른다.
       SVN과 wxWidgets의 홈페이지에 관련 소스를 받아서, 사용자가 컴파일해서 사용하면 된다.

    2. MFC 프로그래밍과 유사한 점이 많다.
    - 큰 장점이라고 생각을 하는 부분이다.
       QT를 사용할 경우, QT만의 프로그래밍 구조 및 이벤트 처리 구조를 익혀야 한다.
       그렇지만, wxWidgets은 많은 부분이 MFC 구조와 동일한 것이 장점이다.
       MFC 프로그래밍을 경험한 사람이라면, 큰 차이점 없이 크로스 플랫폼 GUI 환경을 구축할 수 있지 않을까 하는 것이 개인적인 
       생각이다. (물론, MFC 프로그래밍보다 많은 인내심과 많은 삽질을 유발한다.)

    - 이벤트 처리하는 것이 MFC와 유사하다.

    MFC 이벤트 테이블의 예
    BEGIN_MESSAGE_MAP(CSystemControllerPCDlg, CDialogEx)
    ON_WM_SYSCOMMAND()
    ON_WM_PAINT()
    ON_WM_QUERYDRAGICON()
    ON_BN_CLICKED(IDOK, &CSystemControllerPCDlg::OnBnClickedOk)
    ON_BN_CLICKED(IDCANCEL, &CSystemControllerPCDlg::OnBnClickedCancel)
    ON_NOTIFY(TCN_SELCHANGE, IDC_SYSTEMCONTROLLER_TAB, &CSystemControllerPCDlg::OnTcnSelchangeSystemControllerTab)
    END_MESSAGE_MAP()

    wxWidgets 이벤트 테이블의 예
    wxBEGIN_EVENT_TABLE(MyFrame, wxFrame)
        EVT_MENU_RANGE( ID_MULTIPLE, ID_VERT_RULES, MyFrame::OnStyleChange )
        EVT_MENU( ID_EXIT, MyFrame::OnQuit )
        EVT_MENU( ID_ABOUT, MyFrame::OnAbout )
        EVT_MENU( ID_CLEARLOG, MyFrame::OnClearLog )
    wxEND_EVENT_TABLE()

    - 이벤트 처리기 등록하는 방법은 이 방법 이외에도 동적으로 할당하는 방법도 있다.
       이 방법은 나중에 언급할 예정이다.

    4. 많은 서로 다른 운영체제에서 실행된다.
    - QT는 버전마다 지원되는 운영체제가 달랐다면, wxWidgets은 제약 조건이 없다는 점이 장점이다.

    개인적으로 생각하는 단점은 다음과 같다.

    1. 한글로 된 강좌 및 자료, 포럼이 없다.
    - 개발자 입장에서 정말 치명적인 문제일 듯 하다.
       레퍼런스 할 코드는 wxWidgets안에 존재하는 샘플 프로그램을 참조하는 것이 나을 정도이다.
       프로그래밍 공부를 하는 것이지 영어를 공부를 하는 것인지 헷갈릴 정도이다.

    2. 안정적이지 못하다.
    - 중요한 문제이다.
       여기서 말하는 안정적이다라는 말은 실행 도중 프로그램이 죽는 것을 의미하지 않는다.
       나의 경우에는 SVN에서 개발용 소스를 다운 받아, 개발을 하는 편이다.
       SVN에서 다운을 받아보면 알겠지만, 하루에 업데이트 되는 내용이 너무 많다.
       SVN에 업데이트 되는 소스를 보고 있노라면, 이 라이브러리를 정말로 써도 좋을까 하는 고민을 하게 된다.
       다만,  실제로 사용하면, 프로그램 동작 중에 죽는 경우는 없기 때문에 그 점에서는 신뢰해도 좋을 것 같다.

    3. 개발 도구가 별로 없다.
    - MFC의 경우, 비주얼 스튜디오를 이용한다. QT의 경우도 QT 디자이너가 있다.
      wxWidgets의 경우, 아무 것도 없다라고 이야기할 수 없지만 앞에 언급한 2개와는 지원하는 기능에 있어 차이점이 크다.
      나의 경우에는 개인적으로 공부하기 위해서 사용하는 프로젝트에 적용하기 때문에 큰 문제가 없지만, 상용 프로그램을 개발할 때
      소요 시간은 더 걸리지 않을까 하는 것이 개인적인 생각이다.

    wxWidgets을 사용하면서 나중에 참고하기 위해서 이 글을 남기는 것을 미리 밝혀둔다.
    wxWidgets은 상당히 매력적인 라이브러리라고 생각한다.
    wxWidgets를 사용한 상용 프로그램도 많이 개발되고 있는 편(물론, 외국의 이야기이다.)이기 때문에 좀 더 활성화 되지 않을까 싶다.


    (여기부턴, 내꺼 내용...)

    wxwidget Tutorial site : 참고만... 저도 방문만 해봤어염.

    http://zetcode.com/gui/wxwidgets/


    'IT-개발 > 좋은 Library' 카테고리의 다른 글

    wxwidget - 설치 (펌)  (0) 2016.08.25
    Api - Hooking - EasyHook (펌)  (0) 2016.08.24
    Boost 설치 (펌) - 기타링크  (0) 2016.08.24
    posted by 갱우덩 2016. 8. 24. 15:58


    Api - Hooking - EasyHook (펌)



    아직 안써봤지만, 내용이 워낙 알차서 남겨봅니다. Hooking 이라는게 참~ 안정성이 중요한거 같은데~~

    다음에 진짜 써보고 후기를 올리든지 해야지~ ㅠㅠ


    API Hooking - 64비트를 고려해야 한다면? EasyHook!

    지난 번에 "Trampoline API Hooking" 방식을 알아봤는데요.

    Win32 API 후킹 - Trampoline API Hooking
    ; http://www.sysnet.pe.kr/2/0/1231
    


    이 방법의 단점은, 아쉽게도 x64 지원이 안된다는 것입니다. 물론, 이래 저래 뜯어고치면 되겠지만 '안정성'을 확보할 수 있는 실력이 안된다면 ^^ 차선책을 고려해볼 수 있습니다. 그렇게 선택될 수 있는 첫번째가 그 누구도 아닌 '마이크로소프트' 스스로 개발한 후킹 라이브러리가 있으니, 바로 "Detours"가 그것입니다.

    Detours 라이브러리를 이용한 Win32 API - Sleep 호출 가로채기
    ; http://www.sysnet.pe.kr/2/0/631
    


    음... 그런데, 역시 단점이 없지 않습니다. 32비트/64비트 모두 지원하긴 하지만, 무료 버전은 32비트만 지원하고 64비트까지 지원하려면 반드시 유료 버전을 구매해야 합니다.

    저 같은 평범한 개발자가 $9,999 를 지불하기에는 좀 그러하니, 다음으로 생각해 볼 것이 무료 중에 제법 안정적인 라이브러리가 없나 찾아보게 됩니다. 다행히, 이번달(2012-02) 마이크로소프트웨어 잡지에서 소개된 "EasyHook" 이 괜찮은 후보가 될 것 같습니다.

    EasyHook - The reinvention of Windows API Hooking
    ; http://easyhook.codeplex.com/
    


    LGPL 라이선스이기 때문에 상용에도 쓸 수 있고 DLL 로 링크해서 사용하면 아무런 문제가 없습니다. 그러다 만약 버그가 있다면 소스 코드를 다운로드 받아 버그를 수정한 후 원 저작자에게 알리면 버그 패치된 버전이 나올 것이고, 다시 그 DLL 을 링크해서 사용하면 됩니다.

    '마이크로소프트웨어'에 기사를 쓴 '권용휘'님은 "Powered by EasyHook" 로고를 반드시 포함해야 한다고 했는데... 약간 오해가 있지 않나 싶습니다. 원 저작자는 이에 대해 다음과 같이 설명하고 있는데요.

    I don't remember if this is covered by the LGPL but I would appreciate some kind of "Powered By" Banner/Icon/Notice. You will find an example at the bottom of this page.



    그저 그래줬으면 감사하다는 것이지, 강제 사항은 아닙니다. 사실, 이걸 강제사항으로 넣으면 또 이상할 수도 있는데요. 가령 예를 들어서, UI 가 없는 Library 개발자라면 쓰지 말라는 것이나 다름없으니까요. 게다가 이렇게 라이브러리를 공개한 경우 '감시'수단이 현실적으로 적절하지 않습니다. 아래의 Q&A에서 원 저작자는,

    Licensing question 
    ; http://easyhook.codeplex.com/discussions/236073
    


    you just directly link with the c files it seems fine to me. But it is still a breach with the LGPL but I wouldn't mind in this particular case, as long as the product you are creating is not something like EasyHook.



    소스 코드를 가져다 쓰는 것 조차도, EasyHook 과 같은 라이브러리를 만들려는 것이 아니라면 자신은 괜찮다는 입장을 취하고 있습니다. (물론, 공식 문서화 된 답변은 아니므로 이런 내용에 기대어 오버해석하는 것은 좋지 않습니다. ^^)

    어쨌든, "Powered by" 로고에 대해서는 제가 질문을 올려놨는데 어떤 답이 오는지 한번 지켜보는 것도 재미있을 것 같습니다. ^^

    About "Powered By" logo. 
    ; http://easyhook.codeplex.com/discussions/330548
    





    그건 그렇고, 이제 라이브러리를 사용해 봐야겠지요. ^^

    오늘 날짜 기준으로 안정화된 버전이라고 알려진 2.6 을 다운로드 받아 압축을 풀어놓고 자신의 C/C++ 프로젝트에서 EasyHook32.dll (또는 EasyHook64.dll) 을 링크한 후, 기본 소스를 다음과 같이 작성할 수 있습니다.

    #include "stdafx.h"
    #include "Win32Wrapper.h"
    
    #include "..\Libraries\easyhook.h"
    
    #if defined(_AMD64_)
    #pragma comment(lib, "..\\Libraries\\EasyHook64.lib")
    #else
    #pragma comment(lib, "..\\Libraries\\EasyHook32.lib")
    #endif
    
    WIN32WRAPPER_API void fnWin32Wrapper_Hook(void)
    {
        ...    
    }
    
    WIN32WRAPPER_API void fnWin32Wrapper_Unhook(void)
    {
        ...
    }
    


    그럼, 지난 번에 했던 CoGetClassObject 후킹을 EasyHook 버전으로 한번 바꿔볼까요? ^^ 다행히 "마이크로소프트웨어" 잡지에 실린 기사에 자세한 설명이 되어 있어서 쉽게 다음과 같이 포팅을 할 수 있었습니다.

    DWORD ACLEntries_CoGetClassObject[1] = { (DWORD)-1 }; 
    HOOK_TRACE_INFO g_h_CoGetClassObject= {NULL}; 
    
    HRESULT WINAPI New_CoGetClassObject(REFCLSID rclsid, DWORD dwClsContext, COSERVERINFO *pServerInfo, REFIID riid, LPVOID *ppv)
    {
        if (CanBeActivated(rclsid) == FALSE)
        {
           return REGDB_E_CLASSNOTREG;
        }
    
        return CoGetClassObject(rclsid, dwClsContext, pServerInfo, riid, ppv);
    }
    
    WIN32WRAPPER_API void fnWin32Wrapper_Hook(void)
    {
        HMODULE hModule = ::LoadLibrary(L"Ole32.dll");
    
        FARPROC farProc = ::GetProcAddress(hModule, "CoGetClassObject");
        if (farProc == NULL)
        {
            return;
        }
    
        LhInstallHook(farProc, New_CoGetClassObject,
            NULL, &g_h_CoGetClassObject);
        LhSetExclusiveACL(ACLEntries_CoGetClassObject, 1, &g_h_CoGetClassObject);
    }
    
    WIN32WRAPPER_API void fnWin32Wrapper_Unhook(void)
    {
        LhUninstallAllHooks();
    }
    


    이전과 다른 점이 있다면, 소스 코드가 훨씬 더 간결해졌다는 점을 들 수 있겠고, 무엇보다도 x64/x86 모두 동작한다는 장점이 있습니다. (이렇게 잘 만들어진 라이브러리를 가져다 쓰는 것은 너무너무 행복한 일입니다. ^^)

    이번에도 역시, 첨부한 소스코드는 "닷넷"에서 C/C++ DLL 함수를 불러서 처리하게 했고 이번에는 다음과 같이 Hook/Unhook 버튼을 두어 실행시에 테스트가 가능하도록 했습니다.

    easyhook_1.png

    첨부된 파일은 위의 코드를 포함한 예제 프로젝트입니다.



    'IT-개발 > 좋은 Library' 카테고리의 다른 글

    wxwidget - 설치 (펌)  (0) 2016.08.25
    WXWIDGET (펌)  (0) 2016.08.24
    Boost 설치 (펌) - 기타링크  (0) 2016.08.24
    posted by 갱우덩 2016. 8. 24. 15:54




    http://shaeod.tistory.com/396 (펌)


    boost란 C++ 커뮤니티 및 C++ 개발자들이 개발하고 있는 오픈 소스 라이브러리의 집합으로써,

    C++를 위한 멀티스레딩, 정규표현식, 의사 난수 발생, 선형대수 등을 지원하는 유용한 라이브러리 집합이다.

    또한 C++ 표준에 영향을 미치기도 하며, 최신 표준인 C++11에 boost 라이브러리가 몇 가지 표준으로 채택되기도 하였다.

    boost는 UNIX 및 Windows 등을 포함하여 거의 모든 최신 운영체제에서 작동하며 상업 및 비상업적으로 모두 사용이 가능하다.


    boost다운로드는 http://www.boost.org/ 서 하며, 14. 06. 20일 기준 최신 버전은 1.55.0 버전이다.

    1.48 버전도 같은 방법으로 빌드가 가능한 걸로 보아, 앞으로 최신버전이 나와도 비슷한 방법으로 빌드할 수 있을 거 같다.


    boost를 다운 받았으면 적당한 곳에 압축을 푼다.

    필자의 경우 "D:\boost_1_55_0"에 압축을 풀었다.



    압축 푼 폴더를 보면 "bootstrap.bat"이라는 배치파일이 있는 데

    이걸 실행시킨다.


    bootstrap.bat을 실행시키면 커맨드 창에 아래와 같은 문구가 떴다가 몇 초뒤 사라진다.


    커맨드 창이 사라지면 아래와 같이 "b2.exe", "bjam.exe"파일이 생성된다.


    빌드는 커맨드 창에서 해야하므로 커맨드 창을 실행 시킨 뒤

    boost 라이브러리 폴더가 있는 곳으로 이동한다.

    필자는 위에서 "D\boost_1_55_0"에 압축을 풀었으므로 아래와 같이 이동했다.


    폴더로 이동했으면 아래와 같이 명령어를 입력한다.


    b2 toolset=msvc-12.0 variant=debug,release link=static threading=multi address-model=32 runtime-link=shared


    자세한 옵션은 이곳을 참조한다. <- 링크임


    볼드체로 된 항목은 환경에 따라 달라지므로 유의해서 입력해야한다.

    가령 msvc는 비주얼 스튜디오의 버전으로써 12.0은 2013버전을 뜻한다.

    참고로 2010은 10.0, 2008은 9.0, 2005는 8.0이라고 입력하면 된다.


    또 중요한게 address-model인데, 이 옵션은 컴파일 환경이 x86냐 x64냐에 따라 달라진다.

    이는 윈도우 비트와는 상관없이 x86로 컴파일 하냐, x64로 컴파일하냐에 따라 달라진다.

    대부분의 사람들은 x86 환경에서 컴파일 하므로 잘 모르겠으면 32로 하면 된다.


    나머지는 옵션 중 "debug,release"는 "debug"나 "release"로,

    "shared"는 "static"으로 바꿀 수 있다.



    이전 단계의 명령어를 실행하면 5~30분 정도 시간이 흐른후 아래와 같은 창이 뜬다.

    2개의 경로가 나오는데, 

    위의 경로는 헤더 파일들이 있고, 아래 경로에는 *.lib파일들이 있다.

    헤더는 처음부터 있었고 라이브러리만 생성된 것이다.


    필자는 비주얼 2010과 2013을 사용하므로 각각에 맞는 버전으로 컴파일 해두었다.


    'IT-개발 > 좋은 Library' 카테고리의 다른 글

    wxwidget - 설치 (펌)  (0) 2016.08.25
    WXWIDGET (펌)  (0) 2016.08.24
    Api - Hooking - EasyHook (펌)  (0) 2016.08.24