반응형

아직도 Visual C++ v6.0 을 사용하는 개발자들이 많을거라 생각합니다...
( 물론 저도 그 중에 한 사람이구요.. =0=;;.. )

최종사용자에게 바로 배포되는 프로그램을 만들때는 상관이 없지만...

라이브러리/모듈 형태로 다른 업체에 배포될 개발을 하는 경우는...

컴파일러의 선택도 중요합니다...

음..;; 단적인 예를 들자면...

2005 에서 빌드한 정적 라이브러리가 6.0 에서 제대로 인식이 안되는 문제 정도..??
( =0=;;; 전에 어떤 이유로 한번 테스트를 한적이 있는데 안되었던걸로 기억이..;;.. )

이런저런 이유로... 아직도 필드에선 6.0 이 꽤 많이 쓰이는 걸로 알고 있습니다..;;


C/C++ 개발을 하다보면 별도의 SDK 를 사용해야되는 경우도 생깁니다..

윈도우 시스템 프로그래밍을 위해서 Platform SDK 를 사용한다거나...

게임 프로그래밍을 위해 DirectX SDK 를 사용하듯이...


여기서.. =0= 난감한 부분이.. MS 에서 6.0 에 대한 공식지원을 중단하면서...

최신버전의 Platform SDK, DirectX SDK 를 6.0 에서 사용할 때.....

아래와 같은 링크에러가 발생하는 경우가 있습니다...

( Debug 모드로 빌드할 때 발생하는 듯한...;; )

???????.lib(??????.obj) : fatal error LNK1103: debugging information corrupt; recompile module
Error executing link.exe


[ 관련 MSDN 링크 ]
링커 도구 오류 LNK1103 : http://msdn2.microsoft.com/ko-kr/library/abz4dchs(VS.80).aspx
개체 파일 손상 : http://msdn2.microsoft.com/ko-kr/library/es67b02f(VS.80).aspx

( 물음표는.. -0-;; 경우마다 에러가 발생하는 파일이 다르기땜에;; ^^;;; 특정할 수 없어서.. )

=0=;;.. 이런 링크에러가 발생하면...

해당 라이브러리 파일을 6.0 과 호환이 되는 버전의 파일로 바꿔줘야 제대로 링크가 됩니다..

( 아.. 물론 릴리즈에서 되니까;; "개체 파일 손상" 참고해서 옵션을 바꿔주면 될수도;; :D )


인터넷을 찾아보면... 링크에러가 나는 라이브러리를 다른 이름으로 변경하라는 얘기가 많은데...

저 같은 경우... 그냥 충돌 문제가 없는 이전 라이브러리를 프로젝트 폴더에 복사해버립니다..

링커가 라이브러리를 찾을 때... 프로젝트 폴더가 우선순위가 높으니;; ㅋ...


이런 식으로 현재.. VC++ 6.0 에서 Platform SDK for Windows Server 2003 SP1 을...

같이 사용하고 있습니다..;;

에러가 나는 라이브러리 한해서는 VC98\Lib 폴더에서 복사해서 빌드를 하고~~ㅋ

물론... 바이너리 내부적으로는 어떨지 모르겠지만.. 겉으로는 별 문제가 없어보입니다..;;;

( 원래는.. 6.0 과 호환되는 마지막 버전인 Platform SDK 2003 FEB 버전을 설치했었는데;
  최신 SDK 를 설치하는 과정 중에... 이 녀석이=0= 자동으로 이전 버전을 삭제해버려서;;..
  좀 더 덧붙이면.. Visual C++ 2005 Express 도 같이 설치가 되어있는 상태이고..
  2005 에서는 Platform SDK for Windows Server 2003 SP1..를 쓰려고 했습니다... )

Platform SDK 에 대한 이야기가 길어졌는데.. DirectX SDK 에서도 비슷한 현상이 발생합니다.

이 때도... 이전버전의 라이브러리를 프로젝트 폴더에 복사하면 해결됩니다..
.
.

뭐... 특별한 경우가 아닌 이상 이런식으로 해결이 가능하지만...;;

ㅋ 모든 경우의 테스트를 거친 것도 아니고.. 분명 다른 문제가 발생할 소지도 있다고 봅니다..;;

VC++ 6.0 으로... 별 걱정없이 SDK 들을 사용하고 싶으면..;;

6.0 과 호환되는 버전의 SDK 를 쓰는게 가장 속편할듯 싶네요..

[ VC++ 6.0 과 호환되는 SDK ]
Platform SDK : Windows Server 2003 PSDK (February 2003)
DirectX SDK : DirectX 9.0 SDK Update - (Summer 2004)

반응형
AND