반응형

Test로 해보았는데... 말그대로..


윈도우 폼으로 무언가를 만들고, 이 폼을 어디서든 막 쓰고 싶을 때... DLL 화 시킨뒤에,

어느 프로젝트로 윈폼을 만들어도, DLL을 IMPORT하여 쓰는 경우이다.


그냥 되는지 안되는지 테스트해볼까 하는 생각에 한거라... 이 방식대로 사용할 필요는 없다.

그냥 되는구나~ 라고 느낀 포스팅임.


1. 먼저 윈도우폼 프로젝트를 생성하자. 난 ThisIsDllForm으로 했다.


2. Form1.cs 부터 Form1.Designer.cs, Program.cs 모두 Form1이란 변수이름을 바꿔놓자,

쓰는 곳에서 햇갈리니까~


나는 DllForm 으로 바꿨다. 뭐 지금은 캡쳐할라고 대충 ㅡ,.ㅡ



디자이너 바꾸고...


Form1.cs 애도...


바꾸고..


Program.cs도 


바꾸고..


빌드하니까....



햇갈릴 것 같으니까... 라벨하나 붙여놓자.



자 솔루션에 우측 마우스버튼 눌러서, 새 프로젝트 추가한다.



Windows Form 응용 프로그램 추가한다.



프로젝트 이름은 ThisisExe로 했다.


처음 만들었던, ThisDllForm윈도우폼 프로젝트는 프로젝트 구성을 눌러서

클래스 라이브러리로 출력형식을 바꾸어준다. 


빌드해보면 이젠 Exe가 아니라 Dll 파일이 생성됨을 볼 수 있다.



DLL 프로젝트 말고, 새로 만든 EXE 프로젝트를 시작프로그램으로 설정한다.



Exe 프로젝트에 참조에 우측마우스버튼을 눌러서 참조를 추가한다.

솔루션 프로젝트에서 추가하든.

찾아보기 해서 DLL을 추가한다.



참조 맨 아래에 ThisisDllForm 이 추가됨이 확인되었다.


ExE 프로젝트 Program.cs 화면에서 수정해주면 끝난다.


1. Using 지시자 추가

using System.Runtime.InteropServices;   // DLL IMPORT

using ThisIsDllForm;                       // 여러분들이 만든 DLL의 namespace


DLL IMPORT 관련한 'using System.Runtime.InteropServices' 이것은 DLL의 API를 끌어올 때, 

원래는 다음처럼 사용된다.

EX)

[DllImport("InziPDF2Image.dll")]

public static extern int FunctionName (string arg1, int arg2);


2. Application.Run(new Form()); 은 주석처리하자.


3. 폼 객체를 생성해서 Run~

DllForm FormByDLL = new DllForm();

Application.Run(FormByDLL);


4. 실행화면에서, DLL에서 만들었던 라벨이 떠짐을 볼 수 있다.


DLL의 Form은 현재 Form1.cs, Program.cs, Form1.Designer.cs 등에는 아무런 관련이 없다.

DLL의 Form을 건들꺼면, DLL 프로젝트 내에서 건들거나, 생성된 객체를 이용해서 수정해야 한다.


출처 : 이딴거 없음. 내가 함










반응형
Posted by Rainfly
l