mysql 오동작..
글쓴이: rasungboy / 작성시간: 목, 2004/11/25 - 1:15오후
안녕하세요.
오늘 옵테론 듀얼머신에 페도라 64비트 버전을 설치하고
32비트 머신에서 쓰던 제 소스를 컴파일했습니다.
테스트했는데 오동작해서 왜그러나 했더니 mysql c api 쪽이더군요.
MYSQL_FIELD* field = mysql_fetch_field_direct(m_pResult, iField);
이부분에서 field 의 멈버가 다른부분은 정상적으로 나오는데 일부분이
쓰레기값이 들어있더군요. 원래 저는 여기서 필드타입을 얻어와서
그에대한 처리를 하는데 쓰레기값이라서 오동작을 하게 되네요.
mysql 헤더/라이브러리는 4.1.7 AMD64 비트 버전을 받아서 include/lib
디렉토리만 복사해서 사용했습니다. 링크는 libmysqlclient.a 라이브러리를
링크했습니다.
혹시 버전문제인가 해서
4.0 과 5.0 그리고 os 설치할때 같이 설치된 mysql 것도 사용했는데
다 link 할때 에러나더군요. 4.1.7 만 링크할때 에러가 나지 않았습니다.
예전에도 이런 문제가 있었는데 그때는 윈도우에서 문제였고
문제원인은 링크시킨 mysql 라이브러리가 libmysql.lib 였습니다.
이걸 mysqlclient.lib 로 링크시키니 정상동작 하더군요.
짐작하는바는 예전 윈도우에서 소스컴파일할때랑 똑같은 문제니
라이브러리가 문제가 아닐까 하는데 다른버전의 라이브러리를 사용해보고
싶어도 링크에러가 나서 도통 어떻게 해야 할지 막막합니다.
여러분들의 참고말씀 기달리겠습니다.
Forums:
해결했습니다 ^^
일단 mysql header/lib 를 os설치시 잇는 걸로 사용하고
링크시 나는 에러는 -lz 옵션으로 링크시켰더니 링크 성공입니다.
테스트 해봤더니 잘 되네요. ^^;;
댓글 달기