본문 바로가기
Project/socket_chat_server

CHAT_SERVER 구축 - driver->connect(), abort() error

by 블로블로글 2024. 3. 20.

이번에 서버 코드를 짜면서 가장 어려웠던 부분은 sql과 서버를 연결해주는 방법이었다.

mysql cpp connector를 사용하기로 정했는데, 막상 라이브러리 경로를 알맞게 설정해주고 lib파일도 알맞게 넣었는데도 불구하고 서버와 db의 연결에 실패해서 애꿎은 코드와 설치 환경만 엄청나게 고쳤다.

 

 거의 꼬박 하루를 써서 방법을 찾았는데, 동적 라이브러리 사용이 아닌 정적 라이브러리를 사용하는 방식으로 해결했다.

https://www.youtube.com/watch?v=a_W4zt5sR1M

cpp / mysql connector 설정방법

위의 영상에 나온대로 따라 했더니 문제 없이 작동했다.

실행이 되지 않았던 이유를 찾아 보았는데, 동적 라이브러리는 실행 시점에 해당 라이브러리를 찾아 로드하지만, 정적 라이브러리는 컴파일 시점에 실행 파일에 직접 포함되어 의존성 문제에서 자유롭다는 점을 알게되었다. 오류는 driver->connect 부분에서 abort()가 발생되는 것이었는데, 아마 그 부분에서 의존성에 문제가 생겨 함수를 제대로 실행하지 못하였고, 정적 라이브러리로 바꿨을 땐, 이런 의존성 문제에서 자유로워지기 때문에 정상적으로 실행이 된 것 같다.

 

 항상 문제가 생기면 코드에서만 문제를 찾으려 하는 습관 때문에 거의 꼬박 하루 동안 이 문제를 해결하지 못했다. 라이브러리를 불러오는 과정에서 문제가 생겼을 것이라고 생각하지 못한 것이 큰 것 같다. 다음부턴 라이브러리, 환경변수 등 개발에 기초적인 환경도 꼼꼼하게 점검해야할 것 같다 ㅋㅋ. 오랜만에 window로 진행하다 보니 환경변수 설정에 어려움이 있었다는 것을 생각해도 개인적으로 이 부분을 놓친 것이 아쉽다. 그래도 문제를 찾아보면서 window에서 환경변수 설정, 동적 라이브러리 vs 정적 라이브러리 제대로 피부로 체감하게된 것 같아 좋은 경험이었다고 생각한다