피터지고 치열하게 삶을 유지하다  
Front Page
Notice | Keyword | Tag | Location | Guestbook | Admin | Write Article   
 
멀티바이트 문자 집합 과 _bstr_t 그리고 Link Error

현재 작업중인 MFC 확장 DLL에서 GDI+를 사용할 필요가 있어 사용하게 되었다. 그런데 GDI+ 관련 함수들에 문자열을 넘겨줄 경우 WCHAR * 형을 써야했기 때문에 _bstr_t 클래스를 사용하게 되었다.

이를 위해 comutil.h를 포함하고 comsupp.lib을 링크하여 주었다.
그런데 링크시 다음과 같은 에러가 발생하였다.

error LNK2019: "wchar_t * __stdcall _com_util::ConvertStringToBSTR(char const *)" ...

comsupp.lib을 링크하지 않을 경우에는 추가로 다음과 같은 링크에러가 발생한다.

error LNK2019: "void __stdcall _com_issue_error(long)" ...

Visutal Studio 97의 버그로 컴파일러 호출 규칙을 __cdecl 해주어야만 위 링크에러가 발생하지 않는다는 MSDN자료도 있었지만(--; 사실 정확히는 조금 틀린 링크에러의 경우에 대한 해결책 이었다) 이 프로젝트의 호출 규칙은 __cdecl이었다. 그리고 해당 자료에는 이후 버전 및 서비스팩에서 문제가 해결되었다고 되어 있었다.


comsupp.lib을 링크할 경우 _com_issue_error 링크에러는 없어지는 것으로 보아 comsupp.lib을 링크해야하는 것은 맞는것 같았다.
그렇다면 이게 어떻게 된 일인가?

comutil.h의 ConvertStringToBSTR의 prototype은 다음과 같았다.

namespace _com_util {
  // Convert char * to BSTR
  //
  BSTR __stdcall ConvertStringToBSTR(const char* pSrc) ;

  // Convert BSTR to char *
  //
  char* __stdcall ConvertBSTRToString(BSTR pSrc) ;
}

구글에 도움을 요청한 결과 ^^; 멀티바이트 문자집합을 사용할 경우 comsuppw.lib을 사용해야 한다는 것을 알게되었다.

#include <comutil.h> // for _bstr_t
#pragma comment(lib, "comsuppw.lib") // 링커로 링크해라
.



크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기
Tag : ,
Track this back : http://www.codeforum.net/blog/pitoosung/trackback/68
Commented by 허수 at 2009/08/21 20:40  r x
정보 감사합니다 덕분에 해결했네요 ㅠ.ㅠ

name    password    homepage
 hidden


BLOG main image
피투성의 IT 분투기
 Notice
(2009.11.30) - ㅠ.ㅠ 안녕! 서버 H/W 시스템 교체(서버보드 사망, HP Workstation으로 교체)
(2008.2.2) IP : 195.225.178.29 - 스팸 차단 조치
(2008.1.14) 오후 06:34 ~ 08:07 : 시스템 복구
(2008.1.14) 오전 00:25(?) : 시스템 다운 - 흠 심각하군!
(2008.1.13) 오후 11:31 : 시스템 리부팅됨
(2008.1.13) 시스템 복구 : 오전(?)~오후 1:00
 Category
전체 (148)
프로그래밍 (42)
IT 세상속으로 (42)
세상 엿보기 (26)
지하창고 (18)
책의 향기 (12)
생각의 힘(바둑) (4)
OCR-내가 다 읽어줄께 (1)
두발의 짐승 (2)
지능형 로봇 (1)
 Calendar
«   2010/03   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
 Recent Entries
투명 Display 그리고 Augm...
64bits(x64) Windows OS...
NFS & Eclipse & CDT & In...
행복에 대해 생각하며
Virtual Audio Cable (가...
 Recent Comments
Thanks for your kind tra...
hyungju - 2009
정보 감사합니다 덕분에...
허수 - 2009
관리자만 볼 수 있는 댓글...
- 2009
처음보는 warning이 거슬...
나이 - 2008
Generic 코드는 COM으로...
쭌 - 2008
 Recent Trackbacks
내가 생각하는 한의학의...
Life Is Always Emergency
FreeBSD 6.2, 64bit, 메모...
엘레노아의 작업로그
알약 백신 제대로 사용하...
촌철살인
유용한 블로그 툴 몇개..
ENTClic@blog...just anot...
국내의 검색엔진에 등록하...
케이알선의 이야기
 Archive
2010/01
2009/12
2009/07
2008/09
2008/03
 Link Site
00_피투성의 지식창고_00
 Visitor Statistics
Total : 59523
Today : 26
Yesterday : 72
텍스트큐브 배너
Eolin
rss