DLL) dll 제작하기
dll을 기본적으로 제작을 할려면 프로젝트를 열어야합니다.
우선 win32 프로젝트로 만드셔야 합니다.
설명을 보시면 아시겟지만 win32응용프로그램이나 콘솔응용프로그램 DLL또는 정적 라이브러리를 만드는 프로젝트라고 나와 있습니다.
다음으로 넘어 가줍시다.
dll을 선택해주시고 추가 옵션에는 빈프로젝트나 내보내기 기호를 클릭 하지 말아 주세요
빈프로젝트로하면 입력해야할것이 많아져서 힘듬니다.
처음으로 프로젝트에 들어오시면 보이는 함수 입니다.
저는 해더를 하나 만들어서 사용 할것입니다.
파일을 여러개 만들어서 관리하기 싫으신 분은 그냥 제가 해더에 입력한 부분을 맨 상단에 입력하시면 됨니다.
해더명을 저는 MAKEDLL.h로 하였습니다.
해더에 다음과 같이 입력해 줌니다.
자세이 보시면 #ifdef등 여러 이상한 코드가 있는데요
win32프로젝트다보니 c언어로 나오는것이아니라서 Name Mangling이 발생합니다.
Name mangling 의 현상은 함수명이 이상하게 변환되어서 프로그램을 제작할떄 LoadLibrary로 dll을 로드 할떄 null이 반환되는 경우입니다.
이것이 위코드를 사용하지 않았을 경우에 생기는 Name Mangling 입니다.
위코드를 사용해서 만들면 정상적으로 변환이 됨니다.
위의 코드는 c언어로 변환하기위한 것입니다.
c++은 c언어 기반이므로 당연히 c++에서도 똑같이 하시면 됨니다.
그리고 저 가운데(제가 주석으로 함수를 정의하라고 한부분)에 변환할 함수명을 넣어야 c언어 형식으로 변환이 됨니다.
이제 컴파일 하시면 됨니다.
컴파일을 하시면 이 에러가 뜨는데요 이 에러는 dll이 실행 파일이 아니라서 이 에러가 뜨는것 입니다.
f6으로 컴파일 하시면 이에러는 뜨지 않습니다. f5는 컴파일후 실행까지하는 단축티 이거 f6는 컴파일만 하는 단축키 이기 때문 입니다.
'Development > C/C++' 카테고리의 다른 글
DLL)lib 파일로 dll 사용해보기 (0) | 2014.09.26 |
---|---|
DLL) dll 사용 해보기 LoadLibrary GetProcAddress 이용 (0) | 2014.09.22 |
DLL) dll의 정의와 종류 (0) | 2014.09.21 |
c++) hello hell!! , namespace 그리고 시작하기 앞서 (0) | 2014.07.12 |
c언어) 특수 문자와 변수 설명 (0) | 2014.04.17 |