2013-04-09 2 views
1

COM DLL을 C# .NET 프로그램에 통합하는 데 문제가 있습니다. DLL은 제 3자가 나에게주었습니다. 그것은 VB6에서 이루어졌습니다. 현재, 이것은 내가받는 오류입니다.COM DLL을 C#에 통합

System.Runtime.InteropServices.COMException was unhandled. HResult=-2147221164 Message=Retrieving the COM class factory for component with CLSID {46F5C9EE-D750-4740- AFBD-682F1E097776} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

DLL 파일의 클래스 중 하나에서 새 개체를 만들 때 예외가 throw됩니다.

나는 regsvr32.exe를 사용하여 DLL을 등록하고 tlbimp.exe를 사용하여 다른 DLL을 만들려고했지만 (많은 노력을했지만 엄청난 양의 경고를주었습니다). 매번 프로그램 디버깅을 시도했는데 예외가 발생합니다.

VB6에서 포기해야합니까? 난 정말하고 싶지 않아요 ...

+1

당신은 의존성 워커와 함께 DLL을 보려고 했습니까? 나는 보통 그 도구가 다른 사람들의 dll을 다룰 때 유용하다는 것을 알게된다. –

+0

방위에서,이 프로젝트의 목적은 다른 소프트웨어와 인터페이스하고 사용자에게 자동화를 제공하는 것입니다. 원래 개발자는 전체 프로세스를 자동화하는 VB6 예제 코드 만 제공합니다.이 코드는 아마도 그가 수행 한 작업을 수행 한 것일 수 있습니다. –

+0

언급 한 내용 이외의 오류는 무엇입니까? –

답변

0

당신은 VB6 DLL이 의존하는 DLL이 누락되었습니다. 이것은 다른 VB6 DLL 또는 다른 타사 참조 (또는 VB 런타임과 같은 하위 수준 DLL) 일 수 있습니다.

문제를 해결하는 가장 좋은 방법은 제 3 자 공급자에게 어떤 DLL이 종속성으로 필요한지 물어 보는 것입니다. VB6 개발자로서 그들은 쉽게 당신이 잘못된 경로로 당신을 이끌 수있는 의존성 워커와 같은 것을 실행해야하는 대 질문에 대답 할 수 있어야합니다.

0

좋아요, 문제를 해결했습니다. COM DLL에서 액세스 권한을 부여하는 타사 소프트웨어는 USB 동글이 컴퓨터에 삽입되어야합니다. 그렇지 않으면 평가판 모드로만 실행됩니다. 이로 인해 DLL 기능에 액세스 할 수 없게되었습니다.

관련 문제