- CVI 정보나눔(www.cvi.kr)
- 스터디
- 강좌,팁,유용한것
강좌,팁
[팁] |
2003년 4월 23일 |
DLL 만들기
허창원(hilite@chol.com)
1. 수식어 붙이기
라이브러리로 구성할 함수의 선언과 정의가 있는 .h 와 .c 파일에서 함수의 반환형 바로 뒤에 __stdcall 이나 DLLEXPORT 라는 수식어를 붙입니다.
.h 파일--------------------
int __stdcall A(void);
혹은
int DLLEXPORT A(void);
.c 파일--------------------
int __stdcall A(void)
{
...
}
혹은
int DLLEXPORT A(void)
{
...
}
2. DllMain(), DllEntryPoint() 추가
함수의 정의가 있는 .c Editor 창에서 Edit-Insert Construct-DLLMain을 선택해서 DllMain(), DllEntryPoint() 함수를 첨가합니다.
3. Target Type 지정
Project 창에서 Build-Target Type-Dynamic Link Library를 선택합니다.
4. Exports what 설정
Project 창의 Build-Target Settings-Exports-Export What: Include File Symbols에서 .h 헤더파일을 체크합니다.
5. Export 하고자하는 전역변수가 있을 때는
.c 파일에 전역변수를 정의하고, .h 헤더파일에 다음과 같은 문장을 넣어 둡니다.
Export하고자 하는 전역변수는 KD_STRUCT 구조체의 변수인 kd_struct라고 가정합니다.
KD_STRUCT.c파일---------------------------
#define KD_STRUCT_C /// KD_STRUCT.h를 include하기 전에 선언해주어야함.
#include "KD_STRUCT.h"
#include <cvirte.h>
KD_STRUCT DLLEXPORT kd_struct;
KD_STRUCT.h파일---------------------------
#include <cvidef.h>
#ifndef KD_STRUCT_C
extern KD_STRUCT DLLIMPORT kd_struct;
#endif
참고로, DLLIMPORT나 DLLEXPORT는 cvidef.h에 선언되어 있습니다.
전에는 이런식으로 문서를 만들었었는데, 요즘은 이 사이트 게시판에 그대로 작성하죠!
강좌 17을 한번 따라해보시면, 이 요약문서만으로도 이용하실 수 있을겁니다.