전체보기

107개의 글

[C] 매크로 함수에서 do~while(0)을 쓰는 이유

매크로 함수를 보다보면 do~while(0) 형태로 되어있는것을 보게 됩니다. #define add(a,b,c) do{a = a + b; }while(0) 왜 이렇게 사용하는지 한번 알아볼께요. 아래는 일반적인 매크로 함수 입니다. #include #define add(a,b,c) {a = a + b; \ c = a + b;} void main() { int a = 300, b = 200, c; if (a > b) { add(a, b, c); //if에 { } 를 사용! } else { printf("Test"); //else에 { } 를 사용! } printf("[ %d %d %d] \n", a, b, c); } 위 코드를 컴파일 해보면 정상적으로 동작합니다. 자 이제 if와 else의 소괄호를 없애고..

Windows/DLL,MFC2022.10.26

[Windows DLL] 참고3. Release와 Debug의 차이

개발을 하는 경우에는 보통 Debug모드로 설정하고 진행합니다. Debug 모드로 Build 하면 빌드된 실행파일에 프로그램을 디버깅하기 위한 정보들이 포함됩니다. 그래서 프로그램을 디버깅할때 좋지만, 디버깅하기 위한 정보들도 포함되어있기 때문에 프로그램의 크기가 증가합니다. 따라서 프로그램 개발을 종료하고 배포할때에는 디버깅 정보들이 포함되지 않는 Release모드로 Build하여 배포하게 됩니다. 배포시 꼭 Release로 빌드한 DLL 또는 응용프로그램을 사용하시길 바랍니다.

Windows/DLL,MFC2022.10.21

[Windows DLL] 참고2. MFC으로 개발한 프로그램을 배포할시 유의사항

MFC로 개발한 프로그램들은 기본적으로 MFC에서 제공하는 DLL(동적 라이브러리)에 포함된 라이브러리들을 링크하여 실행합니다. 이때, MFC로 개발한 프로그램을 배포받은 사용자의 PC에 MFC 기본 DLL이 설치되어 있지 않다면 오류가 발생합니다. 이러한 오류를 방지하고자 Bulid할때 사용하는 MFC 기본 DLL의 라이브러리 내용까지 포함시켜 배포 프로그램을 생성합니다. 프로그램의 크기는 커지지만 안정성은 좋아집니다. 설정하는 방법은 MFC로 개발한 프로젝트 속성 페이지에서 [고급]을 클릭하면 [프로젝트 기본값]에 [MFC 사용]이 있는데, 이를 "정적 라이브러리에서 MFC 사용"으로 변경하면 세팅이 완료됩니다. - 공유 DLL에서 MFC 사용이라고 기본으로 설정되어있습니다. - 이를 정적 라이브러리..

Windows/DLL,MFC2022.10.21

[Windows DLL] 참고1. Test 프로그램과 DLL을 동시에 컴파일 하기.

각각의 프로젝트를 만들어서 따로 컴파일 및 실행하면 은근히 번거롭습니다. 또한, 앱 실행하면서 DLL 내부를 디버깅 하고 싶은데 프로젝트를 따로 실행하면 디버깅이 불가능합니다. 그래서 앱 실행프로젝트와 DLL 프로젝트를 동시에 디버깅하는 방법에 대해서 설명합니다. 방법은 엄청 간단합니다. 바로 빌드 종속성을 설정하면 되는데요.. 1. 테스트대상 프로젝트에 마우스 커서를 올리고 우클릭하면 [빌드 종속성]이라는 항목이 있으며, 거기서 [프로젝트 종속성]을 클릭합니다. 2. 종속 대상으로 DLL생성 프로젝트를 체크하고 확인을 누릅니다. 3. 그리고 리빌드하면 성공이 2라고 뜨면서 2개의 프로젝트를 빌드 했음을 확인 할 수 있습니다. 이렇게 설정하면 디버깅시에 테스트용 UI 프로젝트를 실행하면서 DLL에 대한 ..

Windows/DLL,MFC2022.10.21

[DLL 만들기] 5. DLL을 load하여 동작 확인 해보기. (MFC 기준)

이제 DLL을 로드하도록 하겠습니다. 1. 다이얼로그 소스 코드에서 TestAppDlg.cpp 상단에 아래와 같은 소스를 넣습니다. //TestAppDlg.cpp //아래 추가 #include "../DLLTest/test.h" #ifdef _X86_ #pragma comment(lib, "../Debug/DLLTest.lib") #else #pragma comment(lib, "../Debug/DLLTest.lib") #endif 위와 같이 소스 코드를 넣어도 되고 TestApp 프로젝트 속성에다가 입력을 해도 무관합니다. 2. 그리고 이전에 생성했던 버튼 이벤트 메소드에 다음과 같은 소스를 넣습니다. //TestAppDlg.cpp void CTestAppDlg::OnBnClickedBtnPrint()..

Windows/DLL,MFC2022.10.21

[DLL 만들기] 4. 생성한 DLL 동작 확인을 위한 프로젝트 생성하기. (MFC 기준)

이번에는 생성한 DLL을 테스트 하기위한 단계를 진행하도록 하겠습니다. 다양한 방법이 있지만 간단하게 하기 위해서 여기에서는 MFC를 사용합니다. 사용자에 따라 다른 방법 (예를들면 C#같은..)을 사용하셔도 됩니다. 1. 앞에서 생성한 DLL을 테스트 하기 위한 프로젝트를 새로 생성합니다. 솔루션에 마우스 우클릭을 하여 [추가]-[새 프로젝트]를 클릭합니다. 클릭하면 아래와 같은 창이 뜹니다. 2. 위에서 mfc를 검색하면 MFC 앱이라는 목록이 있습니다. 이것을 선택 후 다음을 누릅니다. 3. 프로젝트 이름은 임의로 만듭니다. 여기에서는 TestApp이라고 하겠습니다. 그리고 만들기를 누릅니다. 4. MFC 애플리케이션 창이 뜨면 [애플리케이션 종류]를 "대화상자 기반" 으로 변경하고 마침을 클릭합니..

[C] 매크로 함수에서 do~while(0)을 쓰는 이유

매크로 함수를 보다보면 do~while(0) 형태로 되어있는것을 보게 됩니다. #define add(a,b,c) do{a = a + b; }while(0) 왜 이렇게 사용하는지 한번 알아볼께요. 아래는 일반적인 매크로 함수 입니다. #include #define add(a,b,c) {a = a + b; \ c = a + b;} void main() { int a = 300, b = 200, c; if (a > b) { add(a, b, c); //if에 { } 를 사용! } else { printf("Test"); //else에 { } 를 사용! } printf("[ %d %d %d] \n", a, b, c); } 위 코드를 컴파일 해보면 정상적으로 동작합니다. 자 이제 if와 else의 소괄호를 없애고..

Windows/DLL,MFC2022. 10. 26.

[Windows DLL] 참고3. Release와 Debug의 차이

개발을 하는 경우에는 보통 Debug모드로 설정하고 진행합니다. Debug 모드로 Build 하면 빌드된 실행파일에 프로그램을 디버깅하기 위한 정보들이 포함됩니다. 그래서 프로그램을 디버깅할때 좋지만, 디버깅하기 위한 정보들도 포함되어있기 때문에 프로그램의 크기가 증가합니다. 따라서 프로그램 개발을 종료하고 배포할때에는 디버깅 정보들이 포함되지 않는 Release모드로 Build하여 배포하게 됩니다. 배포시 꼭 Release로 빌드한 DLL 또는 응용프로그램을 사용하시길 바랍니다.

Windows/DLL,MFC2022. 10. 21.

[Windows DLL] 참고2. MFC으로 개발한 프로그램을 배포할시 유의사항

MFC로 개발한 프로그램들은 기본적으로 MFC에서 제공하는 DLL(동적 라이브러리)에 포함된 라이브러리들을 링크하여 실행합니다. 이때, MFC로 개발한 프로그램을 배포받은 사용자의 PC에 MFC 기본 DLL이 설치되어 있지 않다면 오류가 발생합니다. 이러한 오류를 방지하고자 Bulid할때 사용하는 MFC 기본 DLL의 라이브러리 내용까지 포함시켜 배포 프로그램을 생성합니다. 프로그램의 크기는 커지지만 안정성은 좋아집니다. 설정하는 방법은 MFC로 개발한 프로젝트 속성 페이지에서 [고급]을 클릭하면 [프로젝트 기본값]에 [MFC 사용]이 있는데, 이를 "정적 라이브러리에서 MFC 사용"으로 변경하면 세팅이 완료됩니다. - 공유 DLL에서 MFC 사용이라고 기본으로 설정되어있습니다. - 이를 정적 라이브러리..

Windows/DLL,MFC2022. 10. 21.

[Windows DLL] 참고1. Test 프로그램과 DLL을 동시에 컴파일 하기.

각각의 프로젝트를 만들어서 따로 컴파일 및 실행하면 은근히 번거롭습니다. 또한, 앱 실행하면서 DLL 내부를 디버깅 하고 싶은데 프로젝트를 따로 실행하면 디버깅이 불가능합니다. 그래서 앱 실행프로젝트와 DLL 프로젝트를 동시에 디버깅하는 방법에 대해서 설명합니다. 방법은 엄청 간단합니다. 바로 빌드 종속성을 설정하면 되는데요.. 1. 테스트대상 프로젝트에 마우스 커서를 올리고 우클릭하면 [빌드 종속성]이라는 항목이 있으며, 거기서 [프로젝트 종속성]을 클릭합니다. 2. 종속 대상으로 DLL생성 프로젝트를 체크하고 확인을 누릅니다. 3. 그리고 리빌드하면 성공이 2라고 뜨면서 2개의 프로젝트를 빌드 했음을 확인 할 수 있습니다. 이렇게 설정하면 디버깅시에 테스트용 UI 프로젝트를 실행하면서 DLL에 대한 ..

Windows/DLL,MFC2022. 10. 21.

[DLL 만들기] 5. DLL을 load하여 동작 확인 해보기. (MFC 기준)

이제 DLL을 로드하도록 하겠습니다. 1. 다이얼로그 소스 코드에서 TestAppDlg.cpp 상단에 아래와 같은 소스를 넣습니다. //TestAppDlg.cpp //아래 추가 #include "../DLLTest/test.h" #ifdef _X86_ #pragma comment(lib, "../Debug/DLLTest.lib") #else #pragma comment(lib, "../Debug/DLLTest.lib") #endif 위와 같이 소스 코드를 넣어도 되고 TestApp 프로젝트 속성에다가 입력을 해도 무관합니다. 2. 그리고 이전에 생성했던 버튼 이벤트 메소드에 다음과 같은 소스를 넣습니다. //TestAppDlg.cpp void CTestAppDlg::OnBnClickedBtnPrint()..

Windows/DLL,MFC2022. 10. 21.

[DLL 만들기] 4. 생성한 DLL 동작 확인을 위한 프로젝트 생성하기. (MFC 기준)

이번에는 생성한 DLL을 테스트 하기위한 단계를 진행하도록 하겠습니다. 다양한 방법이 있지만 간단하게 하기 위해서 여기에서는 MFC를 사용합니다. 사용자에 따라 다른 방법 (예를들면 C#같은..)을 사용하셔도 됩니다. 1. 앞에서 생성한 DLL을 테스트 하기 위한 프로젝트를 새로 생성합니다. 솔루션에 마우스 우클릭을 하여 [추가]-[새 프로젝트]를 클릭합니다. 클릭하면 아래와 같은 창이 뜹니다. 2. 위에서 mfc를 검색하면 MFC 앱이라는 목록이 있습니다. 이것을 선택 후 다음을 누릅니다. 3. 프로젝트 이름은 임의로 만듭니다. 여기에서는 TestApp이라고 하겠습니다. 그리고 만들기를 누릅니다. 4. MFC 애플리케이션 창이 뜨면 [애플리케이션 종류]를 "대화상자 기반" 으로 변경하고 마침을 클릭합니..

반응형