C#에서 만든 DLL 사용하기

C#에서 만들어진 DLL 사용하는 방법은 매우 쉽다. using 키워드로 해당 DLL 을 불러온 후에 일반 클래스 사용하듯이 사용하면 된다.

using MyDLL;

static void Main (string[] args)
{
    // MyDLL에 정의된 클래스로 객체 정의하기
    Calcurate cal = new Calcurate();

    int resultAdd = cal.add(1, 2);
    int resultMinus = cal.minus(5, 3);
    int resultMultiply = cal.multiply(2, 4);
    int resultDivide = cal.divide(6, 3);
}

C, C++에서 만든 DLL 사용하기

C나 C++로 만든 DLL은 System.Runtime.InteropServices을 using 한 후에, DLLImport라는 애트리뷰트와 extern이라는 키워드를 이용해서 사용해야 한다.

using System.Runtime.InteropServices;

public class SqliteDatabase
{
    [DllImport("sqlite3", EntryPoint = "sqlite3_open")]
    private static extern int sqlite3_open (string filename, out IntPtr db);

    ...

    void Open (string path)
    {
        IntPtr _connection;

        if (sqlite3_open (path, out _connection) != 0)
        {
            throw new SqliteException ("Could not open database file: " + path);
        }
    }
}

extern은 해당 메서드의 구현을 바깥 –여기서는 DLL– 에 맡긴다는 의미다. extern 한정자가 붙은 메서드는 static으로 선언되어야 한다.

extern 키워드가 들어간 함수 이름과 매개변수는 DLL 코드 안에 정의된 것과 같아야 한다. 이렇게 정의된 메서드는 일반 메서드처럼 사용할 수 있다.

위와 같은 기본타입 —int, double, string— 외에 더 복잡한 데이터 타입에 대해 C++의 DLL과 연동한다면 아래 글 참조

C++/ C++ DLL을 C#에서 사용하기