DLL

간략하게 말해서 windows 플랫폼 환경에서 "Dynamic Library" 기술을 사용하도록 하는 방법

 

UNIX / LINUX 플랫폼에서는 "foo.so" 라는 파일을 만듬으로써 "Dynamic Library" 기술을 활용할 수 있다.

 

본론에 앞서서  UNIX/LINUX 플랫폼과의 비교를 간단하게 해보면 다음과 같다.

 

 

UNIX/LINUX  에서는 컴파일 이후  linking 작업시 "foo.so" 파일이 필요

Win32 에서는 컴파일 이후 linking 작업시 Dll 파일 생성시 함께 만들어지는  "foo.lib" 파일이 필요하다

그리고  양쪽 플랫폼 모두 마치 foo.h 라는 헤더 파일을 이용해서 함수를 호출하는 방법으로 프로그래밍 하면 된다.

 

예를 들어, foo.dll 안에 test() 라는 함수를 호출하고 싶다면, foo.h 에 함수의 prototype 을 declaration 한 후, 이를 사용할

파일에 인클루드 한 후 printf() 를 호출하듯이 test() 함수를 호출하면 된다.

 

이 방법에서는 굳이 library 안에 있는 함수의 주소를 가져오는 일을 하지 않아도 된다.

 

 

실제 프로그램 구동시,

UNIX/LINUX 에서는 "foo.so" 라는 linking 시 사용한 파일이 동일하게 사용

Win32  에서는 "foo.dll" 이라는 파일이 필요

 

 

만약, 프로그램 실행시 linking이 되도록 사용을 하려면

UNIX/LINUX 에서는 dlopen 계열의 함수를 사용하고

Win32 에서는 LoadLibrary 계열의 함수를 사용하면 된다.

이 방법은 UNIX/LINUX 나 Win32 플랫폼 모두 실제로 메모리에 load 되는 library 안에 있는 사용할 함수의 주소를 가져와야 하는 작업을 해야 한다.


[출처 : http://blog.daum.net/artofprogramming/4525745]

+ Recent posts