M$ Windows 기반 아래, C나 기타 다른 언어로
libpq 인터페이스를 이용해서 프로그램을 만드실 때,
그 프로그램이 libpq.dll 파일을 사용한다면, 별 문제가 없는데,
libpq.lib 파일을 사용해서 static으로 링크 했을 경우,
libpq에는 winsock을 초기화 하는 루틴이 빠져있어서 PQconnectdb나 기타 다른 PQ api에서 hostname을 해석해 내지 못하면서 프로그램이 비정상적으로 작동됩니다.
static으로 링크할 요량이면, WSAStartup() 함수가 PQ 함수 이전에 한번 호출 되어야하며, 프로그램을 종료하기 전에 WSACleanup() 함수로 winsock 관련 리소스들을 정리해야합니다.
물론 dynamic으로 libpq.dll 파일을 사용할 요량이면, 윗 작업이 없어도 되더군요.
참고 하세요. |