Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
(연관된 글이 1개 있습니다.)

Orcas - ComUtil로 인한 증분(/INCREMENTAL) 링크 옵션 사용 제한


예제 소스를 먼저 풀어보는 것이 좋겠지요.
다음과 같은 Win32 Console Application 소스를 간단하게 만들어 본 후 빌드를 해보십시오.

#include "stdafx.h"
#include "MyTest.h"
#include "comutil.h"

#pragma comment( lib, "comsuppwd.lib" )
//#pragma comment( lib, "comsuppw.lib" )
int _tmain(int argc, _TCHAR* argv[])
{
  char *pStr = "TEST"; 
  BSTR bstrText = _com_util::ConvertStringToBSTR(pStr);

  return 0;
}

빌드로 인한 "Output" 창의 내용은 다음과 같습니다.

1>------ Build started: Project: UseComUtil, Configuration: Debug Win32 ------
1>Compiling...
1>stdafx.cpp
1>Compiling...
1>UseComUtil.cpp
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Linking...
1>comsuppwd.lib(comutil.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification

1>Generating code
1>Finished generating code
1>Embedding manifest...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>comsuppwd.lib(comutil.obj) : MSIL .netmodule or module compiled with /GL found; restarting link with /LTCG; add /LTCG to the link command line to improve linker performance
1>LINK : warning LNK4075: ignoring '/INCREMENTAL' due to '/LTCG' specification

1>Generating code
1>Finished generating code
1>Build log was saved at "file://d:\temp\uacTest\UseComUtil\UseComUtil\Debug\BuildLog.htm"
1>UseComUtil - 0 error(s), 2 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

보시는 것처럼, comsuppwd.lib 라이브러리가 "/GL (Whole Program Optimization)" 옵션으로 빌드되어 있어서, 그 영향으로 인해 전체적인 링크가 다시 "/LTCG (Link-time Code Generation)"과 함께 수행되어버렸습니다.

증분링크(/INCREMENTAL - Link Incrementally)가 무시되어 "/LTCG"로 빌드되었으니, 링크 과정의 시간 손실은 물론이고 디버깅 시에 코드를 수정하는 것이 가능했던 "EnC (Edit and Continue)" 기능마저 사용할 수 없게 되었습니다. (실제로, 위와 동일한 코드를 VS.NET 2005에서 하게 되면 증분 링크 옵션이 정상적으로 동작합니다.)

제 생각에는, Microsoft가 comsuppwd.lib에 대해서 빌드를 잘못한 것이 아닌가 예상해 봅니다. 디버그 버전인 "comsuppwd.lib"는 "/GL" 옵션을 제거했어야 하고, 릴리스 버전인 "/comsuppw.lib"에만 "/GL" 옵션을 주었어야 하죠. 아니면, "comsuppw(d).lib" 쪽에 C++/CLI 코드가 함께 있는 것이 아닌가 싶기도 하고.

다음 베타 버전,,, 적어도 RTM 버전에서는 이 문제가 수정되겠지요. ^^



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/16/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 196  [197]  198 
NoWriterDateCnt.TitleFile(s)
53정성태11/20/200527201VC++: 9. CFtpFileFind/FtpFileFind가 일부 Unix FTP 서버에서 목록을 제대로 못 가져오는 문제
184정성태11/23/200521017    답변글 VC++: 9.1. FTP 관련 토픽파일 다운로드1
51정성태6/24/200426050VC++: 8. BSTR 메모리 할당 및 해제(MSDN Library 발췌) [1]
50정성태6/16/200419178기타: 6. 1차 데스크톱 컴퓨터 사양
49정성태6/16/200419530기타: 5. 53만 원대 Second PC 마련. ^^
48정성태3/2/200421466.NET Framework: 9. 윈도우즈 발전사를 모아 둔 사이트. [1]
47정성태11/14/200519826VS.NET IDE: 7. 한글 OS에서 Internet Explorer 6.0 with SP1의 UI 언어 바꾸는 방법
45정성태1/26/200419310기타: 4. MCAD 시험
44정성태1/26/200420154VS.NET IDE: 6. 터미널 서비스 포트 변경 ( 서버 및 클라이언트 )
46정성태1/26/200425251    답변글 VS.NET IDE: 6.1. Windows 2003 터미널 서비스 라이센스 서버 없이 접속
114정성태11/14/200516645    답변글 VS.NET IDE: 6.2. [터미널 서버 라이센스] : 활성화 시 오류
43정성태12/23/200319980기타: 3. XP/2003 개인 방화벽 설정파일 다운로드1
40정성태7/23/200323563COM 개체 관련: 10. IE BHO 개체를 개발할 때, 인터넷 익스플로러가 아닌 탐색기에서 활성화 되는 문제 해결 [1]
41김성현7/24/200322167    답변글 COM 개체 관련: 10.1. [답변]: IE BHO 개체를 개발할 때, 인터넷 익스플로러가 아닌 탐색기에서 활성화 되는 문제 해결
42정성태7/29/200320010        답변글 COM 개체 관련: 10.2. feedback 을 받기 위해서 답변 기능을 가능하게 해두었습니다.
39정성태7/17/200325833VS.NET IDE: 5. 원격 제어 3가지 방법
38정성태7/17/200322184.NET Framework: 8. IIS 서버 재설치와 ASP.NET 서비스의 문제점
36정성태7/17/200322989.NET Framework: 7. 시행착오 - WebService 참조 추가 오류
35정성태7/17/200323527.NET Framework: 6. Win2000에서의 .NET COM+ 자동 등록 오류 발생 해결
34정성태7/17/200322193VS.NET IDE: 4. VC++ 원격 디버깅파일 다운로드1
33정성태7/17/200322463VS.NET IDE: 3. Win2000 NAT 서비스
32정성태7/17/200323702COM 개체 관련: 9. _bstr_t, CComBSTR, string 클래스 사용 [1]
31정성태7/17/200320698COM 개체 관련: 8. IDL 구문에서 구조체를 pack 하는 방법
30정성태7/17/200338183VC++: 7. [STL] vector 사용법 및 reference 사용예 [1]파일 다운로드1
28정성태7/17/200322476스크립트: 3. Programming Microsoft Internet Explorer 5 - CHM 파일
29정성태7/17/200321946    답변글 스크립트: 3.1. Programming Microsoft Internet Explorer 5 - 소스코드
... 196  [197]  198