반응형
이전 내용에서 PostgreSQL 11 버전부터 x64 MFC에서 사용할 수 없음을 확인하였다.
https://namsaenga.tistory.com/34
PostgreSQL 10 버전을 x86 MFC에서 사용할 수 있는지 테스트했다.
1. PostgreSQL Windows Installer 10을 다운로드한 후에 설치한다.
2. CMake GUI를 열고 "Configure"을 클릭해 Win32로 설정해준다.
- 빌드 프로그램 플랫폼 설정
3. 아래와 같이 Entry 항목을 맞춰주고 "Generate" 버튼을 클릭한다.
- Entry 항목 설정
- 설정 항목
PostgreSQL_LIBRARY | C:\Program Files (x86)\PostgreSQL\10\lib |
PostgreSQL_INCLUDE_DIR | C:\Program Files (x86)\PostgreSQL\10\inclue |
4. "Open Project"로 실행하여 ALL_BUILD 및 INSTALL 프로젝트의 속성을 아래와 같이 변경한 후에 차례로 빌드한다.
- [구성 속성] > [고급] > [기본 설정 빌드 도구 아키텍처] > [32비트(x86)]
- [구성 속성] > [고급] > [MFC 사용] > [정적 라이브러리에서 MFC 사용]
5. 이전 게시물인 "MFC에서 TimescaleDB 사용하기"를 참고하여 우리의 MFC 프로젝트 속성을 변경해주고 빌드한다.
- [구성 속성] > [C/C++] > [코드 생성] > [런타임 라이브러리] > [다중 스레드 디버그 DLL(/MDd)] 일 때, MFC 프로젝트에서 오류가 발생하지 않고 잘 컴파일된다. [다중 스레드 디버그(/MTd)]로 설정하면 오류가 발생한다.
6. 아래는 MFC 프로젝트에서 libpqxx를 사용하려고 할 때 발생하는 오류이다.
- #include를 다 안해주었기 때문에 생기는 오류이다. 아래 #include 목록 중에서 필요한 것을 포함시킨다.
- #include 목록
#include <afxmt.h> #include <iostream> #include <pqxx/pqxx> #include <cstring> #include <stdio.h> #include <WinSock2.h> #include <ws2ipdef.h> #include <WS2tcpip.h> #include <iostream> #include <fstream> #include <stdint.h> #include <string> #include <sys/types.h> #include <cstdio> #include <cstdlib> #include <sys/timeb.h> #include <ctime> #include <chrono> |
- 여기에서 <afxmt.h>는 가장 상단에 위치시켜야 한다. 그렇지 않으면 아래와 같은 오류가 발생한다.
- 우리의 MFC 프로젝트가 [동적 라이브러리 사용] 및 [다중 스레드 디버그 DLL(/MDd)] 이여야 PostgreSQL 라이브러리를 사용할 수 있다.
libpqxx 빌드 프로그램 | 우리의 MFC 프로젝트 |
정적 | 동적, /MDd 불가능 |
표준 | 동적, /MDd 가능 |
동적 | 동적, /MDd 가능 |
7. 혹시나 모르니 다음 속성들이 맞춰져 있는지 확인한다.
- [구성 속성] > [디버깅] > [환경] > [PATH=$(ProjectDir)\bin;%PATH%;]
- [구성 속성] > [C/C++] > [추가 포함 디렉터리] > [(YourProjectDir)\includes;$(ProjectDir)\includes;]
- [구성 속성] > [링커] > [추가 라이브러리 디렉터리] > [$(ProjectDir)\lib;]
- [구성 속성] > [링커] > [입력] > [추가 종속성] > [$(ProjectDir)\includes\pqxx\pqxx.lib;$(ProjectDir)\includes\pqxx\libpq.lib]
* 결론 : PostgreSQL을 x86 MFC에서 이용하기 위해서는 PostgreSQL 10 버전 이하를 이용해야 하고, 동적 라이브러리 사용 및 다중 스레드 디버그 DLL (/MDd) 이여야 한다.
반응형
'프로그래밍 > MFC' 카테고리의 다른 글
MFC에서 TimescaleDB 사용하기 (0) | 2022.04.03 |
---|---|
MFC에서 여러 라이브러리를 사용하기 위한 CMake 방법 (0) | 2022.03.26 |
댓글