티스토리 뷰
윈도우10 64bit VisualStudio2015 MFC 에서 MySQL 사용할때
Debug/Release 둘다 아래 처럼 Lib, include 폴더를 지정해야만 하는데 배포용인 경우 해당 파일들이 없어 문제가 될 수 있어 include 폴더와 lib/dll 관련 파일이나 폴더를 MFC 프로젝트 소스 파일이 있는 폴더에 복사한다. 이때 주의할 것은 프로젝트의 32bit, 64bit 버전에 맞는 Lib 파일을 복사해야 한다. 그러지 않으면 링크 에러 난다.
1. 프로젝트가 64bit 인 경우 MySQL 을 풀버전으로 설치한 경우라면 C:\Program Files\MySQL\MySQL Server 5.7 폴더안에 lib 폴더가 필요하다.
64bit용 Lib 로 32bit MFC 프로젝트에 사용해서 컴파일하면 해당 함수를 찾을 수 없다는 링크 에러가 난다.
2. 프로젝트가 32bit 라면 http://dev.mysql.com/downloads/connector/c/ 에서 아래 그림과 같이 32bit 용을 다운받아 압축을 풀면 된다.
32bit 용으로 Install 본이나 ZIP 압축 파일 중 하나를 다운 받는다.
만약, Install 본을 다운 받아 설치 했다면 C:\Program Files (x86)\MySQL\MySQL Connector C 6.1\lib 에 해당 파일이 있다. (압축 파일을 다운 받았으면 압축 해제)
libmysql.Lib 파일을 얻는다. 인터넷에서 MFC 용 MySQL 예제들이 C Lib 용이 일반적인듯 하다.
참고로, C++ 용 Lib 를 다운받으면 libmysql.Lib 가 아니라 mysqlcppconn.Lib 로 파일명이 다르다.
====================================================
3. include 로더와 lib 폴더를 MFC 프로젝트 소스 파일이 있는곳에 복사해서 MySQL용임을 구분하기 위해 편의상 'mysql_' 첨자를 달았고, 32bit용 Lib 표시로 각각 mysql_include와 mysql_lib32 라고 표시했다.
include 폴더는 64bit용으로 컴파일 해도 문제가 없었는데 혹시 문제 발생하면 위에서 32bit 용으로 받은 include 폴더를 복사한다.
stdafx.h 등의 소스 파일에 아래 코드를 추가한다.
1
2
3
4
5
6
7
8
9
10 |
///// mySQL용
#include "mysql_include\mysql.h"
#pragma comment(lib, "mysql_lib32\\libmysql.lib")
extern MYSQL_ROW g_row;
extern MYSQL_RES *g_res;
extern MYSQL g_mysql;
extern MYSQL g_mysqlHAH1;
extern MYSQL g_mysqlK3S3;
///// |
cs |
또는, 아래와 같이 프로젝트 속성을 지정한다.
프로젝트 속성 창에서 아래 그림과 같이 VC++ 디렉토리 메뉴에서포함 디렉토리에 프로젝트에 복사한 D:\Data\VC\sssDevSimul\mysql_include 로 지정하고 혹시 프로젝트 위치가 바뀔가 싶어 프로젝트 위치를 나타내는 폴더를 지우고 .\mysql_include 으로 수정했다.
(현재 위치에 있는 mysql_include 폴더 쯤이라 이해하면 될듯)
위 그림에서 라이브러리 디렉토리 에도 같은 방법으로 ..\mysql_lib32 로 지정한다.
만약, MFC 프로젝트 속성에서 디렉토리 설정이 번거로우면 MFC 소스에서 직접 폴더 위치를 지정하면 된다.
#include ".\mysql_include\mysql.h"
#pragma comment(lib, ".\mysql_include\mysql_lib32\libmysql.lib")