2009-08-06 3 views
2

현재 VB 6 COM dll에서 일부 데이터를 가져와야하는 스크립트가 더 많거나 적습니다. 이 dll은 현재 MS Word VBA 프로젝트에서 사용되며 클래스 등을 VBA 코드로 내 보냅니다. VBA 편집기의 도구 -> 참조 메뉴에 추가되어 VBA의 객체 브라우저에서 클래스를 볼 수 있습니다.IronPython에서 VB6 COM 'reference'를 어떻게 사용할 수 있습니까?

제 독서에서 VB.NET에서 VB6 COM 라이브러리를 사용할 수 있습니다 (또는 적어도 가능할 것으로 예상됩니다). VB.NET에서 가능해야하고 .NET이 실행되기 때문에 IronPython이 논리적으로 IronPython에서이 고대 DLL에 액세스 할 수 없기 때문에 CLR에서?

IronPython에서 import clr; clr.AddReferenceToFileAndPath(dllpath)을 시도했지만 'IOError : file does not exist'가 계속 나오는데 이는 분명히 잘못된 것입니다.

누군가가/any/.NET 언어로 VB6 COM 개체를 사용하여 나를 가리킬 수 있으면 크게 감사하겠습니다.

감사합니다.

추신 : 아니요, COM DLL의 소스를 보거나 볼 수 없으며 제 3 자 독점적 인 것입니다. PPS : 어떤 방식 으로든 GUID/COM '이름을 얻을 수 있습니다. dll의?

답변

1

tlbimp 도구를 사용하여 런타임 COM 래퍼 어셈블리를 생성하고 이에 대한 참조를 추가해야합니다. .net 속성을 지원하는 언어는 상호 운용을 명시 적으로 수행 할 수 있지만 래퍼를 자동 생성하는 것은 훨씬 간단합니다.

ildasm의 래퍼 어셈블리를 검사하면 변환이 어떻게 수행되었는지 정확하게 알 수 있습니다.

+0

감사합니다. 그것은 아주 잘 진행되었습니다. IronPython의 interop 어셈블리에 대한 참조를 추가했습니다. 모든 것이 '그냥 작동합니다!'! 그것은 보통 결코 일어나지 않는다 :) –

0

.NET 언어 (Visual Studio에서 IronPython이 완전 언어 지원을 제공하는지 또는 .NET Framework와 함께 CLR에서만 실행되는지는 확실하지 않음)에서 참조 추가 대화 상자로 이동하여 COM 탭에서 라이브러리를 선택하면 (VB6/VBA 참조 대화 상자와 매우 유사 함) 기본적으로 완료됩니다. 그런 다음 VisualStudio는 COM 라이브러리의 중개자 인 .NET interop 어셈블리를 생성하고 .NET 어셈블리 인 것처럼 사용할 수 있습니다. VisualStudio에서 IronPython이 지원된다면 아마도 그렇게 할 것입니다.

그렇지 않은 경우 VisualStudio에서 interop 어셈블리를 생성하는 데 사용하는 명령 줄 도구 (웹 참조를 추가 할 때 사용하는 WSDL.EXE와 같은 비트)를 찾고 해당 도구를 사용하여 수동으로 interop 어셈블리를 생성하고 사용하십시오 다른 .NET 어셈블리와 마찬가지로 IronPython에서 가져온 것입니다. 저는 Visual Studio에서 C#으로 작업하기 때문에 Google/MSDN을 확인하지 않고 지금은 구체적인 내용이 없으므로 아직 실제로이 기능이 필요하지 않습니다.

관련 문제