JHB의 프로그래밍 삽질기

[Visual Studio] DLL을 만들기. DLL 사용하기. 본문

PROGRAMMING/C C++ MFC

[Visual Studio] DLL을 만들기. DLL 사용하기.

roter 2010.11.26 14:22
우선 DLL만드는건 아래처럼 하면 됨.


empty project에 체크하지 말것. 체크하지 말아야지 DllMain까지 자동으로 만들어준다.

그리고 이제 아무 것도 건들지 말고 그냥 예제 써보자면
calc.c랑 calc.h를 만들고
각각 이렇게 입력한다.

//calc.h
extern "C" __declspec(dllexport) int add(int lhs, int rhs);

//calc.c
#include "stdafx.h" //요건 상황에 따라 써야할때도 있고 안써도 될 때도 있음.
#include "calc.h"

extern "C" __declspec(dllexport) int add(int lhs, int rhs)
{
return lhs+rhs;
}

그리고 컴파일 하면 DLL파일과 lib 파일이 나온다.
이제 DLL을 사용할 프로젝트에다가 DLL과 lib파일과 헤더파일을 복사 붙여넣기 하고 사용 하면 된다.
사용할 프로젝트에서는
#pragma comment(lib,"이름.lib")
랑 헤더파일을 인클루드 해주고 쓰면 됨.

같은 솔루션 내에서 사용할 DLL이라면 Post-Build Event에다가 DLL을 자동으로 복사하게 해주면 편하다.
예를 들어 이렇게..
copy .\..\debug\example.lib .\..\DLLTest
copy .\..\debug\example.dll .\..\DLLTest
copy .\calc.h .\..\DLLTest

물론 디펜던시도 걸고...(디펜던시를 걸어놓으면 DLL이 먼저 컴파일 된다.)

 p.s> dll을 만들 땐 __declspec(dllexport) 이걸 꼭 써줘야 하는데 dll을 사용할 땐 저게 없어도 된다.
즉 헤더 파일 내용이 extern "C" int add(int lhs, int rhs); 이렇게 프로토 타입만 있어도 잘 된다.
그리고 extern "C" __declspec(dllexport) int add(int lhs, int rhs); 이렇게 export로 써있어도 잘 돌아간다 -.-;;
import로 바꾸면 컴파일 시에 소스를 더 잘 컴파일 한다는데.. 귀찮다.. -.-;;
0 Comments
댓글쓰기 폼