단순 C# DLL - Excel, Access, VBA, VB6에서 어떻게 호출합니까?
저는 c#로 작성된 간단한 수업 도서관이 있습니다.
using System;
namespace TestDll
{
public class Test
{
public string HelloWorld
{
get
{
return "Hello World";
}
}
}
}
제 질문은 Microsoft Office Visual Basic(VB6인 것으로 생각됨)에서 이 HelloWorld 기능을 어떻게 부를 수 있을까요?
첫 번째 단계는 DLL을 참조로 추가하는 것이었지만 컴파일된 DLL을 검색하고 선택할 때 "지정된 파일에 참조를 추가할 수 없습니다."라는 메시지가 표시되었습니다.
이 작업을 수행하는 이유와 방법에 대해 올바른 방향을 알려줄 수 있는 사람이 있습니까?
잘부탁드립니다 SO!
COM interop을 통해 정적 멤버에 액세스할 수 없습니다.사실 당신의 코드는 컴파일조차 하지 않습니다. 메소드는 클래스에 있어야 합니다.다음은 이를 수행하는 방법입니다.
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("01A31113-9353-44cc-A1F4-C6F1210E4B30")] //Allocate your own GUID
public interface _Test
{
string HelloWorld { get; }
}
[ClassInterface(ClassInterfaceType.None)]
[Guid("E2F07CD4-CE73-4102-B35D-119362624C47")] //Allocate your own GUID
[ProgId("TestDll.Test")]
public class Test : _Test
{
public string HelloWorld { get { return "Hello, World! "; } }
}
프로젝트 속성 빌드 탭에서 COM interop 등록을 선택합니다.그래서 결과를 빨리 볼 수 있습니다.다른 컴퓨터에 dll을 설치하려면 regasm을 사용해야 합니다.
사용 방법:
Dim o : Set o = CreateObject("TestDll.Test")
MsgBox o.HelloWorld
dll을 참조하고 얼리 바인딩을 사용할 수도 있습니다.
Dim o As TestDll.Test
Set o = New TestDll.Text
MsgBox o.HelloWorld
다른 컴퓨터에 DLL을 등록할 수 있습니다.
일단 당신이 당신의 개발 기계에서 위의 코드를 컴파일하고 빌드하면, 만약 당신이.
프로젝트 속성 빌드 탭에서 COM interop 등록을 선택합니다.
컴파일된 *.dll이 있는 Visual Studio 출력 폴더(일반적으로 bin\Debug)에도 *.tlb 파일이 있습니다.
이 *.tlb 파일은 '유형 라이브러리'입니다.그리고 *.dll의 다양한 '유형'을 이해하고 기본적으로 클라이언트 시스템에 사용 방법을 알려주기 위해 클라이언트 시스템에 필요합니다.
위의 'Register for COM interop'을 설정하고 *.tlb 파일을 생성하면 어셈블리(dll)가 컴퓨터에 등록되므로 액세스할 수 있습니다.
VBA에서 이제 이 파일을 참조로 추가할 수 있습니다.
VBA Editor -> Tools -> References -> Browse -> 선택
그러면 라이브러리에서 발견된 클래스를 선언할 수 있습니다.
Dim TestClass As Test
Set TestClass = New Test
MsgBox TestClass.HelloWorld
그러나 다른 클라이언트 시스템에서 dll을 사용하려면 regasm.exe를 사용하여 해당 시스템에 어셈블리(dll)를 등록해야 합니다.
이 작업은 명령줄을 통해 수행할 수 있습니다.
regasm.exe
이 경우에는
regasm.exe TestDll.dll
새 클라이언트 시스템에 어셈블리를 등록하면 *.tlb에 참조를 다시 추가하여 어셈블리에 액세스할 수 있습니다.
이것이 도움이 되길 바랍니다!
Visual Studio 2008에서 생성된 .tlb 파일을 가져오려면 Application | Assembly Information 아래로 가서 "Make Assembly COM visible"을 선택해야 합니다.그걸 찾는데 시간이 좀 걸렸으니 다른 사람들에게 도움이 되길 바랍니다.
앤서니에 추가하기WJones의 좋은 답변은 Regasm을 사용하여 DLL을 등록해야 한다는 것입니다.필요한 레지스트리 항목을 추가하는 exe.
언급URL : https://stackoverflow.com/questions/1170794/a-simple-c-sharp-dll-how-do-i-call-it-from-excel-access-vba-vb6
'programing' 카테고리의 다른 글
| Visual Studio에서 "32비트 선호" 설정의 목적은 무엇이며 실제로 어떻게 작동합니까? (0) | 2023.05.17 |
|---|---|
| 선택한 항목 간의 차이항목, 선택된 값 및 선택된 값 경로 (0) | 2023.05.17 |
| Eclipse의 메모리 사용량을 줄이는 방법은 무엇입니까? (0) | 2023.05.17 |
| Git merge 대신 Gitrebase를 사용할 때는 언제입니까? (0) | 2023.05.17 |
| web.config 연결 문자열의 이스케이프 따옴표 (0) | 2023.05.17 |