반응형
/*
* made by so_Sal
*/
윈도우즈 프로그램들은 대부분 주 실행파일이 존재한 상태에서
주요 루틴들은 DLL로 작성하여 이들을 조립하여 만들어진다.
이렇게 만들어진 프로그램이 유지보수가 쉬우며 역할분담이 용이하고,
또 DLL들은 다른 프로젝트에서 재사용이 가능하다.
DLL과 DLL을 호출하여 사용하는 실행파일 2개를 생성하여
프로그램을 만들어 볼 것이다.
1. DLL 제작하기
2. DLL을 사용하는 프로그램 제작하기(Console)
1. DLL 제작하기
파일 / 새로만들기 / 프로젝트 -> 클래스 라이브러리 선택
제목은 간단하게 myDLL 이라 입력하였다.
DLL은 다른 모듈에게 클래스나 메서드를 제공하는
서비스 역할을 하기에 '서버' 라고 많이 부른다.
프로젝트를 만들면 Class1.cs 라는 기본 파일을 생성하고,
기본적인 코드를 미리 입력해준다.
using System;
namespace myDLL
{
public class Calculator
{
public static int Add(int a, int b){
return a + b;
}
public static int Sub(int a, int b)
{
return a - b;
}
}
}
C#은 완벽한 객체지향 언어이므로, 메서드만 단독으로 제공할 수 없다.
위처럼 클레스를 통해 클라이언트에게 메서드를 제공하여야만 한다.
DLL 안에서 외부로 공개하고자 하는 클레스의 액세스 지정자는
반드시 public으로 하여야 한다.
액세스 지정자를 public으로 지정해주지 않는다면 자동으로(default)
Internal이 적용되는데, 이는 외부에서 엑세스하지 못하도록 한다.
이 프로젝트를 컴파일 하면 myDLL.dll 파일이 생성될 것이다.
2. DLL을 사용하는 프로그램 제작하기(Console)
myDLL이 잘 동작하는지를 확인하는 클라이언트 프로그램을 간단하게 제작해보자.
제목은 간단하게 useDLL이라 입력하였다.
그럼 useDLL의 소스를 다음과 같이 작성해보자.
using System;
using myDLL;
{
public class Calculator
{
public static int Add(int a, int b){
return a + b;
}
public static int Sub(int a, int b)
{
return a - b;
}
}
}
C#은 완벽한 객체지향 언어이므로, 메서드만 단독으로 제공할 수 없다.
위처럼 클레스를 통해 클라이언트에게 메서드를 제공하여야만 한다.
DLL 안에서 외부로 공개하고자 하는 클레스의 액세스 지정자는
반드시 public으로 하여야 한다.
액세스 지정자를 public으로 지정해주지 않는다면 자동으로(default)
Internal이 적용되는데, 이는 외부에서 엑세스하지 못하도록 한다.
이 프로젝트를 컴파일 하면 myDLL.dll 파일이 생성될 것이다.
2. DLL을 사용하는 프로그램 제작하기(Console)
myDLL이 잘 동작하는지를 확인하는 클라이언트 프로그램을 간단하게 제작해보자.
제목은 간단하게 useDLL이라 입력하였다.
그럼 useDLL의 소스를 다음과 같이 작성해보자.
using System;
using myDLL;
namespace useDLL
{
class Program
{
static void Main()
{
Console.WriteLine("3 + 2 = {0}", Calculator.Add(3, 2));
Console.WriteLine("3 - 2 = {0}", Calculator.Sub(3, 2));
Console.ReadLine();
}
}
}
위의 소스 그대로 컴파일을 하면
오류 CS0246: 'myDLL' 형식 또는
네임스페이스 이름을 찾을 수 없습니다.
라는 에러를 뱉을것이다.
컴파일러는 myDLL 네임스페이스가
어떤 위치에 있는지 모른다.
(닷넷에 정의되어 있는 네임스페이스가 아님)
왼쪽 그림철머 프로젝트 -> 참조 추가
항목을 선택하여 위 소스에서 참조할
myDLL의 위치를 지정해주어야만 한다.
- 참조추가 모습 -
컴파일 후 실행
참고자료 : 닷넷 프로그래밍 정복 | 김상형 저자 | 가메출판사
'Windows_ > Windows_C# & App' 카테고리의 다른 글
C# - Console interface 기능. (0) | 2014.07.24 |
---|---|
C# - 학생 성적처리, 관리 프로그램 소스 (0) | 2014.07.24 |
C# - 객체배열 생성하는 방법 (0) | 2014.07.24 |
C# : Namespace와 Using (3) | 2014.07.24 |
C# : 콘솔과 윈폼을 위한 프로젝트 만들기 (0) | 2014.07.24 |