Release 버전은 문제가 없었는데 Debug용은 Oracle에서 제공하는 Connector와 프로젝트에서 사용중인 런타임 라이브러리 옵션이 맞지 않아 MYSQL Connector 소스를 가지고 빌드를 해야되는 경우가 생겼다.
(공식 홈페이지에서 제공하는건 /MD와 /MDd 뿐)
준비물은 다음과 같다.
1. MYSQL Connector C++ Source
https://downloads.mysql.com/archives/c-cpp/
2. CMake-GUI
3. OpenSSL
https://github.com/openssl/openssl
4. Visual Studio 2015 버전 이상
(Connector 버전에 따라 필요한 컴파일러 버전이 다르니 MYSQL 공식 홈페이지 참고)
https://visualstudio.microsoft.com/ko/downloads/
5. Boost Library
https://www.boost.org/users/download/
6. MYSQL Server
7. MYSQL Connector C Source
Debug를 빌드하기 위해 libmysql.dll, libmysql.lib, mysqlclient.lib가 필요하다.
Release는 MYSQL Server에 포함되어 있는걸로 사용 가능한 것 같다.
그저 다른 라이브러리 처럼 CMake에서 Configure 실행하면 실패한다.
MYSQL은 OpenSSL 라이브러리가 필요하기 때문에 아래의 옵션을 꼭 추가해서 생성해야한다.
이거 알아내려고 삽질을 좀 했다.
주의할점은 Windows라고 해서 경로를 \로 작성하지 말자.
못 찾는다. /로 작성하자. 그럼 끝이다.
MYSQL 빌드시 에러 대처
1. error LNK2001: 확인할 수 없는 외부 기호 __iob_func()
-> VS 2015 버전 이후로 해당 함수들이 함수 포인터를 넘겨주던 방식에서 함수 포인터를 넘겨주는 방식으로 변경됨
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
=>
#define stdin (__acrt_iob_func(0))
#define stdout (__acrt_iob_func(1))
#define stderr (__acrt_iob_func(2))
해결 방법은 여러가지가 있다.
- __iob_func()를 직접 구현한다.
- stdio 함수 링크인 경우엔 legacy_stdio_definitions.lib를 종속성에 추가한다. => 이걸로 함
혹시 프로젝트 설정을 바꿔야 하는 경우 생성된 프로젝트에서 바꾸지말고 전부 삭제한 뒤 다시 CMake로 만들어야 에러가 안나는듯 하다..
참조한 사이트
https://dev.mysql.com/doc/connector-cpp/1.1/en/connector-cpp-source-configuration-options.html
https://m.blog.naver.com/gur0/222036146658
https://zh.wikibooks.org/zh-hant/MySQL_Connector/C%2B%2B
https://forums.mysql.com/read.php?167,669925,671603#msg-671603
https://blog.csdn.net/fksec/article/details/25872389
https://catwolf.org/qs?id=b6d60b91-8781-4911-af19-5352f2f4def1&x=y
https://www.cnblogs.com/TTaiAL/p/6912600.html
https://full-way.rssing.com/chan-1174357/all_p21.html
'DB > MYSQL' 카테고리의 다른 글
SELECT FOR UPDATE (0) | 2022.10.20 |
---|---|
DB Link (0) | 2022.08.31 |
C++ Connector 사용시 conntect 함수에서 std::bad_alloc 발생 (0) | 2022.05.13 |
LAST_INSERT_ID() 사용 시 주의할 점 (0) | 2022.01.07 |
테이블, 컬럼 언어 변경하기 (0) | 2021.12.29 |