Posted by prostars
Windows SDK도 깔지 않고 서비스 팩만 설치한 기본 VC++2005 개발 환경에서 프로토타입만 개발한다는 게...알파 버전까지 진행되었다.
뒤늦게 문제가 되어 VC++ 2005에 Windows SDK 6.0을 설치했는데...
빌드가 안된다 -_-;

링크 에러가 발생한다.
--------------------------------------------------------------------------------------
오류    3    error LNK2019: unresolved external symbol "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" (?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z) referenced in function "public: __thiscall _bstr_t::Data_t::Data_t(char const *)" (??0Data_t@_bstr_t@@QAE@PBD@Z)    noname.obj
--------------------------------------------------------------------------------------


구글링 결과 위와 같은 링크 에러가 발생하면 아래와 같이 하면 해결이 된다는 간단한 해결책이 나온다.
--------------------------------------------------------------------------------------
#ifdef _DEBUG
#pragma comment(lib, "comsuppwd.lib")
#else
#pragma comment(lib, "comsuppw.lib")
#endif

하거나...

'wchar_t를 기본 제공 형식으로 처리'옵션을 '아니오'(/Zc:wchar_t)로 설정하면 된다.
--------------------------------------------------------------------------------------

왜 Windows SDK를 설치하고 나서 문제가 되었는지 조금 더 들어가 보면 Windows SDK에서 제공된 comdef.h가 VC++ 2005에서 기본 제공된 comdef.h와 comsupp.lib 링크 부분이 다르다는 것을 확인할 수 있다.

C:\Program Files\Microsoft Visual Studio 9.0\VC\include\comdef.h
--------------------------------------------------------------------------------------
#ifdef _NATIVE_WCHAR_T_DEFINED
# ifdef _DEBUG
# pragma comment(lib, "comsuppwd.lib")
# else
# pragma comment(lib, "comsuppw.lib")
# endif
#else
# ifdef _DEBUG
# pragma comment(lib, "comsuppd.lib")
# else
# pragma comment(lib, "comsupp.lib")
# endif
#endif
--------------------------------------------------------------------------------------

C:\Program Files\Microsoft SDKs\Windows\v6.0\Include\comdef.h
--------------------------------------------------------------------------------------
#pragma comment(lib, "comsupp.lib")
--------------------------------------------------------------------------------------

Windows SDK 6.1의 comdef.h는 확인을 못 해봤다.

왜 저런 차이가 생겼을까...?

관련 자료: http://msdn.microsoft.com/ko-kr/library/799kze2z(VS.90).aspx
크리에이티브 커먼즈 라이선스
Creative Commons License

트랙백 보낼 주소 : http://prostars.net/trackback/182 관련글 쓰기

댓글을 달아주세요

  1. 2010/07/25 13:42
    댓글 주소 수정/삭제 댓글
    혹시 SQLITE를 링크 하신경우에는 위와같이 해도 소용 없더라구요

    SQLITE가 release로 배포되었고, 거기에서 libcmt를 링크 하더라구요
    그래서 프로젝트 구성을 릴리즈로 바꾼 후 해결 되었습니다

    http://bykim25.spaces.live.com/blog/cns!2E805998F4DB0AF8!617.entry를 참고 하세요
    • 2010/08/03 18:05
      댓글 주소 수정/삭제
      좋은 정보 감사합니다.

<< PREV : [1] : ... [21] : [22] : [23] : [24] : [25] : [26] : [27] : [28] : [29] : ... [186] : NEXT >>

BLOG main image
prostars의 블로그 by prostars

카테고리

분류 전체보기 (186)
prostars (45)
프로그래밍과 이것저것 (40)
문화생활!? (42)
뚝딱 뚝딱 (7)
쟁여놓기 (2)
엘더스크롤 4 : 오블리비언 (49)

Total : 158,933
Today : 65 Yesterday : 85
Statistics Graph