Microsoft MVP성태의 닷넷 이야기
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
부모글 보이기/감추기

비슷한 류의 오류라고 볼 수 있겠군요.
VS.NET 2003에서의 VC++ 프로젝트에서도 자동 생성 코드에서 오류가 있는 경우가 있습니다.

importlib("stdole2.tlb");
[
uuid(15C8BB20-023C-4FAD-9A72-E3267A27AC33),
helpstring("_ICTestCOMEvents Interface")
]
dispinterface _ICTestCOMEvents
{
properties:
methods:
[id(0x01)] void OnLoad( [in] VARIANT oEvent );
};

위의 IDL 파일을 컴파일해서, Connection Point 추가를 하게 되면 다음과 같은 코드가 자동생성됩니다.

if (pConnection)
{
CComVariant avarParams[1];
avarParams[0] = oEvent;    avarParams[0].vt = VT_VARIANT;
DISPPARAMS params = { avarParams, NULL, 1, 0 };
hr = pConnection->Invoke(0x01, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &params, NULL, NULL, NULL);
}

어떤 것이 오류일까요? ^^

avarParams[0].vt = VT_VARIANT;로 한번 더 처리해주는 코드 때문에 오류가 발생합니다.
위의 코드는 마치 oEvent.vt = VT_VARIANT;라고 하는 것과 다를 바가 없지요. 따라서,

oEvent.vt = VT_BSTR;
oEvent.bstrVal = CComBSTR( "TEST" ).Copy();

라고 해서 oEvent 인자로 이벤트를 발생시키는 코드를 다음과 같이 만들게 되면,

CProxy_ICTestCOMEvents::Fire_Event( oEvent );

내부적으로,

avarParams[0] = oEvent;
avarParams[0].vt = VT_VARIANT;

라고 해버리니 오류가 발생할 수밖에 없습니다.

이를 피하기 위해서는 자동 생성된 코드에서 avarParams[0].vt = VT_VARIANT; 코드를 삭제해 주거나 VARIANT 인자형을 쓰지 않는 방법을 고려해 볼 수 있습니다.

VS.NET 2005 정식버전에서는 어떻게 위의 코드가 자동 생성될지 기대가 됩니다. ^^








[최초 등록일: ]
[최종 수정일: 6/27/2021]

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

비밀번호

댓글 작성자
 




... 181  182  183  184  [185]  186  187  188  189  190  191  192  193  194  195  ...
NoWriterDateCnt.TitleFile(s)
333정성태8/20/200624029개발 환경 구성: 11. COM+ 서버 활성화 보안 설정
331정성태8/27/200616988개발 환경 구성: 10. 최대 절전 모드와 VPC 네트워크 문제
330정성태8/20/200617263개발 환경 구성: 9. VPC로 구성하는 개인 환경
328정성태8/20/200635000개발 환경 구성: 8. AppVerifier 사용법 [1]
327정성태8/16/200631789개발 환경 구성: 7. ActiveX 서명 과정 자동화 [1]
326정성태8/16/200625530Team Foundation Server: 13. Sysnet 웹 사이트 TFS Migration
322정성태8/15/200620457개발 환경 구성: 6. 4GB 메모리 구성 [1]
316정성태9/20/200639523디버깅 기술: 6. .NET 예외 처리 정리 [6]
309정성태12/27/200640428디버깅 기술: 5. PDB 이야기 [7]
310정성태8/5/200627521    답변글 디버깅 기술: 5.1. PDB 파일에 따른 Debug 정보 - WinForm + Library 유형의 프로젝트파일 다운로드1
311정성태8/10/200626978    답변글 디버깅 기술: 5.2. PDB 파일에 따른 Debug 정보 - .NET 2.0 Web Application Project + Library 유형의 프로젝트
312정성태8/5/200629715    답변글 디버깅 기술: 5.3. PDB 파일에 따른 Debug 정보 - .NET 2.0 Web Site Model 유형의 프로젝트
313정성태8/12/200628820    답변글 디버깅 기술: 5.4. VS.NET 2005 디버그 모드에서의 PDB 파일 사용 차이 (1)
317정성태8/12/200626323    답변글 디버깅 기술: 5.5. VS.NET 2005 디버그 모드에서의 PDB 파일 사용 차이 (2)
318정성태8/12/200632746    답변글 디버깅 기술: 5.6. VS.NET 2005를 이용한 미니덤프 파일 분석 (1)
319정성태8/12/200627757    답변글 디버깅 기술: 5.7. VS.NET 2005를 이용한 미니덤프 파일 분석 (2) [1]
320정성태8/12/200631889    답변글 디버깅 기술: 5.8. WinDBG를 이용한 미니덤프 파일 분석 [1]
321정성태8/13/200636300    답변글 디버깅 기술: 5.9. Microsoft의 PDB 파일 관리
323정성태8/15/200637711    답변글 디버깅 기술: 5.10. Symbol Server 생성 [4]
324정성태8/15/200634560    답변글 디버깅 기술: 5.11. PDB 파일과 소스 코드
325정성태9/8/200627248    답변글 디버깅 기술: 5.12. CCP를 이용한 Windows Source Code 수준의 디버깅
329정성태8/19/200626251    답변글 디버깅 기술: 5.13. 소스 서버 구성 [1]
332정성태8/20/200627727    답변글 디버깅 기술: 5.14. GAC 에 등록된 Assembly 디버그 [2]
341정성태9/16/200620082    답변글 디버깅 기술: 5.15. [내용 예약]
342정성태9/16/200637633    답변글 디버깅 기술: 5.16. ASP.NET 디버깅 환경 구성 [1]파일 다운로드1
306정성태2/13/200717150기타: 15. .NET 이 생산성이 높다는 증거(!)
... 181  182  183  184  [185]  186  187  188  189  190  191  192  193  194  195  ...