티스토리 뷰
목차
C# 액티브엑스 라이브러리(dll) VB로 이식하는 방법 (ActiveX DLL)
출처 : C# ActiveX dll을 VB에서 사용하는 방법 [한빛, 링크]
1. C# ActiveX의 생성
Visual Studio .net 2005 or 2005 express or higher 버전을 설치하고 사용할 언어를 C#으로 설정한다.
그리고 프로젝트 유형을 Class Library로 설정하고 이름을 부여한다.
[C# 액티브엑스 DLL 변환] 프로젝트 생성
기본적으로 프로젝트를 만들어 주는데 여기에서 namespace는 프로젝트 이름을 의미한다. 이것은 Visual Basic의 프로젝트 이름과 같다. 이제 사용할 Class 이름을 제공해 주어야 한다. 기본적으로 Class1이란 이름이 주어지는데 이것을 CDllTest로 부여하기로 한다.
[VB ActiveX 라이브러리 이식] 기본 생성 코드
[C# 액티브엑스 DLL 변환] Class명 변경
프로젝트 탐색기에서 Class1.cs을 선택하고 속성의 File Name 부분에 CDllTest.cs라고 입력을 하면 프로그램 내의 모든 Class1이란 단어는 CDllTest로 변경된다.
[VB ActiveX 라이브러리 이식] Class명 부여
[C# 액티브엑스 DLL 변환] Class명 변경 승인
이름을 바꾸겠다는 메시지이다. Yes를 클릭하면 다음과 같이 기존 생성 코드가 변경된다.
[VB ActiveX 라이브러리 이식] 변경된 Class명
2. ActiveX의 설정
ActiveX dll이란 것을 명시해 주어야 하므로 이를 위한 코드를 변경해야 한다.
기본적으로 dll은 Assembly의 형태로 관리되기 때문에 다음 파일을 열어서 코드를 변경한다.
[C# 액티브엑스 DLL 변환] ActiveX 설정
1 2 3 4 | // Setting ComVisible to false makes the types in this assembly not visible // to COM components. If you need to access a type in this assembly from // COM, set the ComVisible attribute to true on that type. [assembly: ComVisible(false)] | cs |
위 설명과 같이 ComVisible 속성을 true로 바꾸면 COM에서 접근할 수 있다고 되어 있다.
그래서 다음과 같이 변경한다.
1 | [assembly: ComVisible(true)] | cs |
인터페이스를 설정하고 코딩을 하는 일만 남았다.
인터페이스를 설정하는 이유는 객체지향 특성과 다중 상속을 위한 것이다. 또는 본문 코드에 [assembly: ComVisible(true)] 를 삽입할 수도 있다. 아마 이것이 더 쉬운 방법일 것이다.
3. dll 코드의 생성
[VB ActiveX 라이브러리 이식] dll 변환 예제
4. dll 생성
이제 컴파일하여 dll 파일을 생성하는 과정을 살펴보자. 프로젝트->속성->빌드 텝을 살펴볼 것이다.
[C# 액티브엑스 DLL 변환] 빌드 조건
빌드는 Release로 하고 Register for COM Interface를 체크하여야 한다. 이렇게 하면 dll과 tlb파일이 생성되는데, VB6에서와 관리-비관리 코드에서는 이 tlb파일을 참조한다.
이것은 매우 중요한 개념이다.
빌드 솔루션(F6키)를 누르면 상기 두 파일이 생성될 것이다. 실제 output path는 무의미하다. Debug 폴더에 파일이 만들어진다.
[VB ActiveX 라이브러리 이식] 빌드 결과
5. Assembly 등록
이제 만들어진 dll을 사용하여야 하는데, 이를 위해서 레지스트리에 등록하여야 한다.
이를 위해 상기 dll을 사용할 컴퓨터에 임시 폴더를 하나 만들어 regasm 명령을 실행한다.
[C# 액티브엑스 DLL 변환] 대상 PC에서 어셈블리 등록
여기에서 codebase 옵션을 실행하여야 한다.
이 옵션은 같은 PC에서 다른 응용 프로그램이, 즉 ActiveX를 호출하는 프로그램이 접근할 수 있도록 연결을 한다는 것이다. 단, .net Framwwork SDK v2.0 이상을 설치하여야 한다.
regasm 명령어가 여기에 들어 있기 때문이며, 윈도우 cmd 프롬프트 창이 아니라는 점이다. 이제 비관리 코드를 생성하는 프로그램(예, visualstudio 6)의 VB를 실행하고 ActiveX를 테스트해 본다.
[VB ActiveX 라이브러리 이식] Client 프로그램에서의 참조
[C# 액티브엑스 DLL 변환] 프로젝트 참조
찾아보기를 눌러서 임시로 생성한 폴더에서 프로젝트 이름인 AxComponent를 찾아서 등록한다.
이때 AxComponent.tlb파일을 선택하여야 한다. 꼭 확인하여야 한다. 그리고 프로젝트를 실행하면 된다.
[VB ActiveX 라이브러리 이식] vb 예제
2번 line에서 new 프로젝트.클래스 형태로 C# dll을 메모리에 생성한다. 그리고 이때의 인스턴스인 a를 통해 C# dll 함수를 호출한다.
6. 결론
프로그래밍 언어와 개발 환경도 진화하면서 과거의 개발 툴과 프로그래밍 언어를 재사용하고자 하는 방법에 대하여 많은 사람이 고민을 하고 있다. 이러한 방법을 찾아 그 해법을 찾기란 곧 시간과의 싸움이 될 것이다.
인터넷의 진화로 많은 도움을 얻을 수 있는 만큼 무엇인가 새로운 것에 적응하고 이를 응용하기란 프로그래머에게는 숙제 아닌 숙제가 될 수밖에 없다.
참고로 COM dll을 .net에서 사용하는 방법은 지난번 주제에서 다루었으니 참고하기 바란다.
C# 액티브엑스 라이브러리(dll) VB로 이식하는 방법 (ActiveX DLL)