윈도우에서 C/C++ 코딩을 할 때는 보통 Visual studio 를 사용하곤 합니다.
지난 포스팅에서도 말씀 드렸다시피 요즘은 Visual C++ 같은 경우에는 공짜로 사용 가능 하더군요.
2012/06/03 - [컴퓨터일반] - Visual studio 에서 math.h 정의시 상수 사용 방법
그런데 Visual C++ 은 타 운영체제에서 지원을 안 하므로 타 운영체제도 고려 한다면 Cross platform 컴파일러를 이용하는 것이 좋다고 생각돼서~~ 윈도우에서도 gcc 를 사용하곤 합니다.
윈도우에서 gcc를 사용하는 방법은 세 가지 정도 되는 것 같습니다.
Cygwin, MinGW 등을 사용하거나 아니면 버츄얼 박스 등으로 윈도 내에 리눅스 깔아서 사용하는 방법 등이 있는 것 같은데.
MinGW와 Code::Blocks 을 사용하니깐 굉장히 편리하더군요.
Code::Blocks 은 cross platform C/C++ IDE 인데요. 아래 페이지에서 윈도우 binary 를 받을 수 있습니다.
http://www.codeblocks.org/downloads/binaries
다음과 같이 Mingw 가 포함된 파일을 다운로드 받아서 설치하면 Mingw 를 따로 설치해야 하는 번거로움을 없앨 수 있습니다.
설치 과정이야 아시겠지만 다음 다음~~ 만 누르면 되니깐 설명드릴 게 없을 것 같군요.
이제부터 본 포스팅의 주 목적인 DLL 사용법에 대해 설명 드리려 합니다.
일단 DLL 을 만드는 방법 입니다.
Codeblock 을 실행시키고~
File à New à Project 로 들어갑니다.
DLL 을 만들거니까~~ 아래 그림처럼 Dynamic Link Library 를 선택하고 Go 를 눌러 줍니다.
다음과 같이 만들고자 하는 DLL 의 이름을 적어 주시구요~
컴파일러 설정 후에 Finish 를 눌러서 설정을 종료 합니다.
이렇게 하면 main.h 와 main.cpp 가 자동으로 생성 되는데요.
여기서는 간단하게 int 형의 제곱과 덧셈 연산을 수행하는 함수로 만들어 보죠.
main.h 는 다음과 같이 고치구~
main.cpp 는 쓸데 없는 것 다 ~~ 지우구 다음과 같이 작성했습니다.
이제 codeblock 에서 build target 을 설정한 후에 Build 메뉴의 Build 또는 단축키 Ctrl+F9 를 눌러서 빌드 합니다.
이렇게 하면 해당 프로젝트 폴더의 bin\ 하위에 선택된 build target 폴더(Debug 또는 Release) 안에 libDllExam.dll.def, DllExam.dll, libDllExam.dll.a 파일이 생성 됩니다.
이렇게 만들어진 DLL 파일을 사용해 보죠.
DLL 을 사용하기 위해서는 위에서 만든 .dll, .a 그리고 main.h 파일이 필요 합니다.
Codeblock 에서 Console application 으로 새로운 프로젝트를 생성하고 다음과 같이 위에서 만든 DLL 함수들을 사용해 보죠~
새로 생성한 프로젝트 폴더에 위에서 만들어진 DllExam.dll 파일과 main.h 파일이 들어있어야 합니다.
그리고 Codeblock 의 Settings 메뉴의 Compiler and debugger 에 들어 갑니다.
아래 그림처럼~ 위에서 만들었던~ libDllExam.dll.a 의 full path 를 적어 줍니다.
이제 codeblock 에서 F9 를 눌러서 실행을 시키면 ~~
이렇게 실행 되는걸 확인 할 수 있습니다.
'컴퓨터일반' 카테고리의 다른 글
C++11 많이 좋아졌네요. (0) | 2012.08.26 |
---|---|
deque 이용 Memory shift 실험 (2) | 2012.08.15 |
자바 환경변수 설정 (0) | 2012.08.11 |
C/C++ memmove() 함수 속도 실험 (4) | 2012.08.06 |
C/C++ memcpy() 함수 속도 (0) | 2012.07.16 |
C/C++ 동적 할당 배열 인덱스 1부터 시작하기 (0) | 2012.06.21 |
Perl YouTube download (0) | 2012.06.17 |
GoldWave command line 명령 이용하기 (0) | 2012.06.05 |
댓글