2012-08-13 4 views
2

COM 오브젝트 DLL을 개발해야하는데 이전 오브젝트를 대체 할 수 있습니다. 이전 COM DLL을 사용하는 응용 프로그램을 개발하지 않으므로이 작업이 필요합니다. 동일한 속성과 메서드를 사용하여 새 COM 개체를 만듭니다. 내가 보는 주된 어려움은 UUID이다. 나는 그들 중 일부의 중요성과 그들이 사용되는 곳의 중요성을 이해하지 못한다. 나는 그것들 중 어느 것이 복제되어야하고 어떤 것은 남겨 둘 수 있는가? COM 객체를 호출하는 프로그램 (Navision의 경우)은 라이브러리와 typelibrary를 설명하는 UUID를 사용한다는 것을 알았습니다. 누군가가 그러한 작업에서 경험을 공유 할 수 있다면 좋을 것입니다.COM 개체를 바꾸는 방법은 무엇입니까?

+0

NAV 2009 R2를 사용하는 경우 NAV에서 .NET 추가 기능을 더 잘 지원하므로 COM 추가 기능이 아닌 .NET 추가 기능으로 만들 수 있습니다. – Allanrbo

+0

같은 클래스의 모든 UUID 인터페이스 ID입니까, 아니면 COM 라이브러리에 여러 클래스가 있습니까? 후자의 경우, 어떻게 관련이 있습니까? 예 : 'object1'가'object2'를 생성 할 수 있다면, 게시 된 IID를 사용하는 대신 내부 메소드를 사용할 수 있습니다. – MSalters

답변

4

GUID는 매우입니다. 중요한 것은 COM이 인터페이스, 클래스 및 형식 라이브러리를 찾는 데 사용하는 것입니다. 이름 대신에, 인간은 보장 된 고유 한 이름을 고르는 것에별로 능숙하지 않습니다.

정확히 일치해야합니다. 그렇지 않으면 클라이언트 코드가 올바르게 작동하지 않습니다. 또한 인터페이스가 똑같은 서명과 똑같은 순서로 똑같은 메소드를 가지고 있는지 확인해야합니다. 잘못된 guid를 얻는 것은 합당한 오류 메시지를 생성하는 경향이 있지만, 인터페이스를 잘못 이해하면 거의 항상 실행 불가능한 런타임 동작이 발생합니다. 이는 운이 좋은 경우에만 액세스 위반이 발생합니다.

+0

GUID는 모두 똑같이 중요합니까? COM 객체의 수정 된 버전을 사용하면 모든 GUID가 첫 번째 버전의 것과 일치해야합니까? – Jaywalker

+0

드롭 인 대체품이 될 것으로 예상되는 경우 그 중 하나를 다른 것으로 만드는 데는 전혀 요점이 없습니다. –

관련 문제