본문 바로가기

MFC

/MT /MD 옵션의 차이 /MT와 /MD의 차이 /MTd는 /MT의 디버그버전. 마찬가지로 /MDd는 /MD의 디버그 버전. /MT: 내가 만드는 응용 프로그램이 C런타임 라이브러리의 기능을 사용할 때 static link version인 LIBCMT.lib를 사용하여 프로그램이 빌드된다는 뜻. /MD: 내가 만드는 응용 프로그램이 C런타임 라이브러리의 기능을 사용할 때 dynamic link version인 MSVCRT.lib를 사용하여 프로그램이 빌드된다는 뜻. 즉 내가 dll을 만들든 .lib를 만들든 그냥 .exe를 만들든 이 옵션은 아무거나 골라도 상관이 없음. 문제는 .lib를 가져다가 쓰는 경우 이 /MT /MD옵션이 맞지 않으면 'XXX is already defined in YYY’같은 에러가 뜨면서 컴파.. 더보기
.h파일 include하는 올바른 방법 서로 클래스가 물고 물리는 경우 어떻게 include를 해야 syntax에러가 안나올 수 있을까? stdafx.h에 모든 header file을 include한다고 했을 때, 윗쪽에 선언된 클래스는 아랫쪽에 선언된 클래스를 알지 못한다. 그래서 일단 #include하는 순서가 중요하다. 하지만 클래스가 서로를 물고 물리는 recursive형태를 가지게 되면 #include가 중복으로 되든지 아니면 #pragma once에 의해 #include를 해도 어느쪽에서는 무시되어 여전히 서로를 알아보지 못한다. 유일한 방법은 class a;를 header파일 윗쪽에 써주는 것이다. 구체적으로 class A, B, C가 있다고 생각해보자. A는 B* b, C* c 를 멤버변수로 갖는다. B는 A* a를 멤버변수로 .. 더보기
Rabbitmq-c 와 CURL 라이브러리 사용법 Rabbitmq-c와 Curl 모두 SSL(TLS)연결 시 openssl라이브러리를 사용하는데 서로 다른 버전의 라이브러리를 사용하도록 .lib를 빌드하면 amqp socket만들 때 에러가 발생한다. 꼭 두개의 버전을 맞춰야 함에 유의하자. OpenSSL라이브러리 설치 라이브러리 다운로드: Win32/Win64 OpenSSL Installer for Windows - Shining Light Productions 라이브러리는 Win32 OpenSSL v1.1.1d를 설치하자. .exe파일을 다운받아 실행하면 설치파일이 실행된다. 설치파일 실행 도중 OpenSSL DLL을 어디에 위치시킬지 경로를 물어보는데 이 경로에 'libcrypto-1_1.dll', 'libssl-1_1.dll.. 더보기