본문 바로가기

소프트웨어/C/C++

C/C++] DLL 만들기 및 적용(dll export, dll import)

C/C++] DLL 만들기 및 적용(dll export, dll import)


목표 :

DLL을 만들고(export) 사용해보았다(import)


진행 이유 :

Arm용 C Library를 만들면서 일일이 TSP를 터치해서 테스트하는게 너무 번거롭기도 하고, 간간히 빼먹는 Test Case들이 있어서(손으로 직접 재현을 하다보니..) Java Unit Test처럼 Unit Test가 필요했다. 그래서 Arm용 Lib을 Win32용 Library로 변환하고 dll로 추출한다음 테스트가 필요했다.


방법 :


1) DLL Project 생성

New Project -> Win32 콘솔응용프로그램 -> DLL 및 빈프로젝트로 생성



2) Export할 Fuction에 dllexport로 사용함을 명시 및 빌드

declspec을 dllexport로 설정해주면 *.dll 파일로 만들었을때 외부 프로젝트에서 해당 함수에 접근할 수 있다.

export할 Function들을 모두 명시하고 dll로 빌드를하면 Project 경로에 *.dll 및 *.lib이 생성된다.



3) Import

dll을 사용할 프로젝트경로에 '2)'에서 만든 *.dll과 *.lib을 복사한다.

import할 함수는 현재 프로젝트에서 구현체를 갖고있지 않기때문에 interface를 외부에서 extern함을 명시하고 declspec을 dllimport로 설정해준다. getNumber(int)가 외부에서 링크한다는건 알고있는데, 어떤 곳에서 링크하는지를 명시해야 하기 때문에 __declspec 이전에 #pragma comment(lib, "LIBNAME.lib")을 명시해서 찾아야 할 lib을 알려준다.

여기까지 진행하고 프로젝트를 빌드하면 dll에 구현된 getNumber(int)를 사용할수 있게된다.




끝 :

처음에는 Dll이 어려운 개념인줄 알았는데 알고보니 크게 새로운개념은 아니었음.(처음 만들때는 많이 해맸음 @.@)