2012-08-08 3 views
0

C# .NET 클래스 라이브러리 (MyLib.dll)가 있습니다. MyLib.dll이 내 클래스 라이브러리 (MyLib.dll)에 대한 참조를 통해 추가 된 다른 타사 DLL (Other.dll) 파일을 호출하고 있습니다.vb6에서 타사 DLL을 볼 수있는 방법을 만드는 방법은 무엇입니까?

이제 문제는 MyLib.dll이 vb 6.0에서 사용된다는 것입니다.

COM을 활성화하기 위해 MyLib.dll을 등록했으며 또한 내 클래스 라이브러리의 속성에서 Register for COM Interop 옵션을 설정했습니다.

(Regasm 사용)의 파일은 .tlb이고, COM에서는 보이도록 Other.dll입니다. 나는 vb6의 참고 문헌에서 MyLib and Other을 볼 수있었습니다.

MyLib의 메서드는 표시되지만의 메서드는 vb6을 사용하여 열 때 볼 수 없습니다.

또한 MyLib을 GAC에 넣으려고했지만 Other.dll (제 3 자 dll)은 vb6을 지원하지 않으며 VB.Net뿐만 아니라 C# .net도 지원합니다.

Other.dll의 메서드를 vb6에 표시하는 방법.

제 3 자 dll의 메소드를 표시 할 수있는 방법이 있습니까?

+0

TlbExport를 통해 Other.dll을 실행했기 때문에 내부의 모든 개체와 메서드가 노출 된 것은 아닙니다. OLEView를 사용하여 Other.tlb를 검사하여 예상대로 작동하는지 확인합니다. 추가 도움을 위해 IDL을 게시하십시오. – tcarvin

+1

이렇게하려면 Other.dll의 클래스에 특성을 적용해야합니다. 소스 코드가 없으면이 작업을 수행 할 수 없습니다. –

+0

@HansPassant 나는 그것의 소스 코드를 가지고 있지 않다 –

답변

1

그래서 내가 올바르게 이해하면 MyLib.dll은 COM에서 볼 수 있지만 Other.dll은 그렇지 않습니다. 그러나 Other.dll이 MyLib.dll에서 볼 수 있으면 MyLib.dll을 Other.dll과 COM 사이의 브리지로 사용할 수 있습니다.

다른 DLL에는 COM에 노출시키려는 void Foo (int x, string y) 함수가 있습니다. 이렇게하면 MyLib.dll에서 기능을 만듭니다.

public void Foo(int x, string y) 
{ 
    Other.Foo(x, y); 
} 

이 작업을 수행하지 않으시겠습니까?

+0

Other.dll은 COM에서도 볼 수 있습니다. MyLib.dll은 Other.dll의 함수를 사용합니다. 그래도 작동하지 않습니다. –

관련 문제