ATL 메서드 추가 마법사 창에서 8ce0000b 오류 발생
ATL 프로젝트의 Class View에서 "Add Method Wizard"를 실행한 경우 다음과 같은 오류가 발생했습니다.
Line: 491
Char: 4
Error: Could not complete the operation due to error 8ce0000b.
Code: 0
URL: file:///C:/Program%20Files%20(x86)/Microsoft%20Visual%20Studio%2014.0/VC/VCWizards/CodeWiz/ATL/Method/HTML/1033/default.htm
검색해 보면 다음의 글이 나오는데요.
ATL Code Wizard: Add Method failes due to Script Error
; https://connect.microsoft.com/VisualStudio/feedback/details/1056839/atl-code-wizard-add-method-failes-due-to-script-error
이슈를 제기한 Incubbus씨가 적절한 workaround를 직접 덧글에 달아두었습니다. ^^
방법은, 다음의 파일을 '관리자 권한'으로 실행한 notepad.exe등을 통해 편집하는데,
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\VCWizards\CodeWiz\ATL\Method\HTML\1033\default.htm
491라인의 코드를 다음과 같이 변경해 주는 것입니다.
var aryClasses = new Array();
if (GetInterfaceClass(oProject.CodeModel, oInterface.Name, oInterface.FullName, aryClasses, false))
{
var oClass = aryClasses[0];
if (strInterfaceType == "dispinterface")
{
if (oClass.IsDerivedFrom("COleControl"))
{
bMFC = true;
bCOleControl = true;
}
else if (oClass.IsDerivedFrom("CCmdTarget"))
{
bMFC = true;
}
}
/*
if (oClass.IsDerivedFrom("COleControl") && strInterfaceType == "dispinterface")
{
bMFC = true;
bCOleControl = true;
}
else if (oClass.IsDerivedFrom("CCmdTarget") && strInterfaceType == "dispinterface")
bMFC = true;
*/
}
타당한 변경입니다. 사실 이제는 거의 "dispinterface"를 사용하지 않기 때문에 그 조건을 먼저 검사함으로써 oClass.IsDerivedFrom 호출시 8ce0000b 에러가 발생하는 것을 우회하는 것입니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]