우리는 이런가 someting이 중 두 정의 다중 인터페이스와 IDL 파일있다 : 그들은 두 전혀 관련 인터페이스이다IDL 파일에서 이름 충돌이 발생합니다.
[
object,
uuid(79E24BAA-DC12-4caf-91DD-2A4D47FED30A),
helpstring("ISomeInterface Interface"),
pointer_default(unique)
]
interface ISomeInterface: IUnknown
{
[propget, id(2)]
HRESULT SOMEMethod([out, retval] BSTR* pValue);
};
[
object,
uuid(834421B6-511D-457D-B50C-69E7E1B65471),
dual,
nonextensible,
helpstring("IACompleteDifferentInterface Interface"),
pointer_default(unique)
]
interface IACompleteDifferentInterface : IDispatch
{
[propget, helpstring("property SomeMethod")]
HRESULT SomeMethod([out, retval] BSTR* pVal);
[propput, helpstring("property SomeMethod")]
HRESULT SomeMethod([in] BSTR newVal);
}
를, 즉, (동일한 이름을 가진 하나 개의 방법이 일어날 상이한 케이싱 있지만 표시). 모든 것은 우리가
ISomeInterface -> SOMEMethod
우리가 존재하지 않는 말하는 오류를 호출하는 프로젝트를 컴파일하려고하지만, 확인을 보인다. 우리가 전화하면
ISomeInterface -> SomeMethod
잘 컴파일됩니다.
두 메서드 중 하나의 이름을 바꾸면 ok도 컴파일됩니다. 두 개의 서로 다른 인터페이스에서 이름 충돌을 기대하지는 않지만 그 일은 일어나는 것처럼 보입니다.
우리는 그 중 하나의 이름을 변경하여 문제를 해결할 수 있지만 문제를 이해하고 싶습니다. 아무도 나를 위해 그것을 설명 할 수 있습니까? 감사합니다.
감사합니다. phsyic 디버깅 기능이 관리되는 C# 프로젝트에서 사용하고 있다는 사실에 놀라움을 금치 못했습니다. 나는 당신이 제안한 새로운 tlbimp를 시도 할 것입니다, 고마워요. –