2011-03-22 3 views
3

웹 서비스를 호출하는 vb.net에서 dll을 작성한 다음 반환 된 데이터를 사용하여 결과를 호출 프로그램으로 다시 전달합니다. 나는 원래 VS 2008, Windows 7 (x64)에 썼습니다. Windows 7에서 작성된 VB 6 프로그램에서 테스트되었으며 모든 것이 효과가있었습니다. vb6 프로그램에서 데이터를 얻었고 계속 진행할 수있었습니다.vb6 dll에서 .net dll 사용

나를 위해 현실 세계하지만 내가 코드

Dim myWebService as webService.ComClass1
Set myWebService = New webService.ComClass1

I에 도착하면 나는 오류 "개체를 만들 수 없습니다 ActiveX 구성 요소"를 얻을 비주얼 베이직 6에서 작성된 다른 DLL 내부에이 DLL을 사용하는 것입니다 WindowsXP (x86)에서 코드를 다시 컴파일하고 .dll 및 .tbl을 통해 다시 작성했습니다.

dll을 등록하려고하면 'DllRegisterServer 진입 점을 찾을 수 없습니다'라는 오류가 발생합니다. .tbl에 대한 참조를 추가하고 intellesense가 작동하는 한 VB에서 잘 등록하는 것처럼 보입니다.

누구나 내가이 작업을 수행하기 위해해야 ​​할 아이디어가 있습니까?

답변

4

.NET 어셈블리를 Regsvr32.exe에 등록하지 마십시오. Regasm.exe를 사용해야 할 경우 프레임 워크 디렉터리에서 도구를 찾을 수 있습니다. 어셈블리를 GAC에 넣지 않으려면/codebase 옵션을 사용하십시오. 당신은 dev 컴퓨터에 있어서는 안됩니다.

Visual Studio에서 대신 해 주었기 때문에이 기능은 정상적으로 작동했습니다.

+0

/codebase 옵션을 사용해 보았지만 서명되지 않았다는 오류가 나타납니다. 어떻게해야합니까? 또한, 이제 "자동화 오류, 시스템이 지정된 파일을 찾을 수 없습니다"라는 오류 메시지가 나타납니다. – spuppett

+1

이것은 오류가 아니며 경고입니다. 그것은 "당신이 DLL 지옥을 다루는 것에 신경 쓰지 않습니까?"라는 의미입니다. 지금 당장 당신은하지 않습니다. 어떤 파일을 찾을 수 없는지, 어쩌면 경고를받은 후에/codebase를 사용하지 않았을 것인가? SysInternals의 ProcMon 도구를 사용하여 찾고있는 내용을 볼 수 있습니다. –

+0

제대로 작동합니다. 무리 감사! – spuppett

0

.net DLL은 VB6 dll과 동일하게 등록 할 수 없습니다. .NET DLL에는 그 안에 tlb가 없으므로 별도입니다.

대신 .net dll에 REGASM을 사용하십시오. 귀하의 컴퓨터에 있지만, 기본적으로 경로에 있지 않기 때문에 검색을 수행해야 검색 할 수 있습니다.