C/C++ 을 사용하여 우리가 흔히 사용하는 ls 또는 dir 명령과 같이 directory 의 파일 또는 폴더의 리스트를 얻고 싶어서 찾아보니

 

아래 주소의 글이 나오더군요. 역시… stackoverflow

 

http://stackoverflow.com/questions/612097/how-can-i-get-a-list-of-files-in-a-directory-using-c-or-c

 

boost 와 같은 매우 좋은 라이브러리를 사용하는 방법도 있지만 첫번째 답변에 dirent.h 파일을 사용하는 방법이 설명 되어 있었습니다.

 

dirent.h 는 C POSIX library 에 포함되어 있으며 MinGW 나 GCC 등에서는 사용할 수 있지만 Visual Studio에서는 사용할 수 없더군요.

 

http://stackoverflow.com/questions/5530933/dirent-h-in-visual-studio-2010-or-2008

 

사실 이런 파일 리스트와 관련한 함수들은 Cross Platform 으로 구성되어야 코딩하기 편한데 각 플랫폼에 따라 다르게 코딩하는 방법을 알아야 된다는 게 귀찮더군요.

 

그런데 역시.. dirent.h 는 Visual Studio 에서 사용할 수 있도록 아래 주소에 API 가 있었습니다.

 

http://www.softagalleria.net/dirent.php

 

또한 첫 번째로 소개했던 주소에 Visual Studio 에서 사용 할 수 있는 dirent.h 의 링크가 있더군요.

 

http://www.softagalleria.net/download/dirent/

 

몇 가지 파일 중 dirent-1.11.zip 파일을 다운로드 받았고~ Codeblock 을 사용하여 빌드 해 봤습니다.

 

필요하신 분들을 위해 dirent-1.11.zip 파일도 올립니다.

  

dirent-1.11.zip


빌드 후에 아래 그림과 같이 dirTest.exe C:\Windows 라고 명령해서 C:\Windows 의 파일리스트를 확인해 봤습니다.

 

잘 되더군요.

오늘은 간단하게 사용할 수 있는 C++ xml parser 하나 소개해 드리려 합니다.

 

Xml parser 라이브러리의 이름은 pugixml 이고요~

 

아래 주소에서 다운로드 가능합니다.

 

https://code.google.com/p/pugixml/downloads/list

 

다음 그림과 같이 편하실데로~ zip 또는 tar.gz 파일을 다운로드 받으면 됩니다. 저는 현재 최신버전인 1.2 버전의 zip 파일 버전인 pugixml-1.2.zip 을 다운로드 받았습니다.

 

압축을 해제하면 src,scripts,docs,contrib 폴더로 구성되는데요~ 이 중에서 src 폴더가 라이브러리 소스 파일입니다.

 

Xml 을 사용하고자 하는 폴더에 src 폴더의 pugixml.hpp, pugixml.cpp, pugiconfig.hpp 파일들을 추가한 후에 사용하시면 되겠습니다.

 

pugixml-1.2\docs\samples 에는 다양한 예제들이 있는데요~ 저는 xml 파일에 대한 load 부분만 필요해서 load_file.cpp 파일을 사용했습니다.

 

프로젝트에 pugixml.hpp, pugixml.cpp, pugiconfig.hpp, load_file.cpp파일을 추가하고 load_file.cpp 에서 사용하는 tree.xml 파일도 추가 해 줍니다.

 

다음으로 빌드를 하고 실행해 보면~ 다음과 tree.xml파일의 mesh 노드의 name attribute 의 내용인 mesh_root 를 선택적으로 읽어 올 수 있는 것을 확인 할 수 있습니다.

 

라이브러리가 파일만 추가하면 되서 사용하기 쉽고 사용법도 매우 편하네요~

 

속도 등에 대한 테스트는 안 해 봤지만 간단한 용도로 사용하는 제 입장에서는 대 만족이네요.

 

위에 예제로 사용한 codeblock 프로젝트 파일도 추가 합니다.

 


xmltest.zip



  1. Ok Man 2014.06.25 23:58 신고

    컴퓨터 언어 공부는 어렵지 않나요? 저도 공부해보고싶긴한데..

    • 남성 2014.06.26 00:39 신고

      하고 싶은데 어려울까봐 안하시는 건가요? 두려워 말고 시작해 보세요~ 꼭 프로그래머가 되려고 하는게 아니더라도 컴퓨터 언어 공부는 어느정도 필요하다고 봅니다. 요즘은 컴퓨터 교육이 아이들 교과과정에도 포함되고있는 추세죠~ 어차피 컴퓨터는 죽을때 까지 사용하잖아요. 간단한 스크립트 언어부터 시작해 보세요. 삶이 달라지실 거에여~ 블로그 운영에도 도움 되실 거에여~ 윈도우만 사용하신 다면 제 블로그에서도 소개하고 있는 Autohotkey 강추 드립니다.

  2. Ok Man 2014.06.26 02:16 신고

    아 그래요? 블로그 자주 들릴게요 기초적인것부터 차근차근 많이 알려주세요 ^^ 저도 예전부터 컴퓨터 언어에 대해서
    잠시나마 비쥬얼베이직은 배운적이 있지만 제대로 배워본적은 없어서 ㅎㅎ 자주 들릴게요 좋은정보 감사해요!!

    • 남성 2014.06.26 02:41 신고

      실제 그냥 윈도우 사용하는데는 비쥬얼 베이직은 그리 실용적이진 않은데~ Autohotkey 는 정말 실용적이거든요

아래 포스팅에서 CodeBlocks 에서의 MinGW 설치에 대해 말씀드린 적이 있는데요~


2012/07/31 - [컴퓨터일반] - Codeblock 에서 DLL 사용하기


CodeBlocks 에 같이 포함되어 있는 MinGW 는 32 bits 더군요.

 

보통 CodeBlocks 와 같이 설치하게 되면 아래 폴더에 설치가 되게 됩니다.

 

C:\Program Files (x86)\CodeBlocks\MinGW\

 

요즘은 그래도 많은 분들이 64 bits 운영체제를 많이들 사용하실 텐데요.

 

그래서 찾아보니... 64 bits MinGW 가 있더군요. 아래 주소에서 다운로드 할 수 있습니다.

 

http://tdm-gcc.tdragon.net/

 

위 주소에서 Download 를 누르고 들어가셔서 아래 그림처럼 exe 파일을 클릭하면 Sourceforge 사이트로 넘어가면서 설치 프로그램이 다운로드 됩니다.

 

설치 프로그램을 실행 시키고 아래 그림처럼 초반에 설정하고 ~~

 

 

그 다음 부터는 다음 다음~~ 누르면... 아래 폴더에 설치가 완료 됩니다.

 

C:\MinGW64

 

Default 로 다음다음 누르셨다면~ C:\MinGW64\bin 폴더가 환경변수의 path 로 설정 되셨을 겁니다.

 

윈도우 cmd 창에서 gcc --version 이라고 타이핑했을 때, 아래 그림처럼 나오면 정상입니다.

 


여러분은 C/C++ 코딩시 어떤 툴을 주로 사용하시나요?

 

주변의 사람들을 보면 윈도우에서는 대부분 Visual C++ Express 를 주로 사용하고 gcc 를 사용하는 사람들은 대부분 윈도우나 리눅스에서 Eclipse CDT 를 많이들 사용하더군요.

 

저는 윈도우에서도 주로 MINGW 를 이용해서 gcc 를 사용하곤 하는데, 개인적으로 Codeblock 을 선호합니다.

 

Codeblock 은 아래 포스팅에서도 간단히 소개한적이 있는 C/C++ IDE 인데요~

 

 

2012/10/14 - [유틸] - Codeblock doxygen plugin DoxyBlocks


2012/08/26 - [컴퓨터일반] - CodeBlock 에서 FFTW 라이브러리를 사용한 FFT 실습


2012/07/31 - [컴퓨터일반] - Codeblock 에서 DLL 사용하기


 

기교적 가볍고 윈도뿐만 아니라 리눅스에서도 사용이 가능하다는 것이 장점이라고 할 수 있을 것 같네요.

 

IDE 를 사용하면 makefile 등을 일일이 작성하지 않아도 되서 편리하긴 한데....

 

경우에 따라서는 Makefile 이 필요한 경우가 있더군요.

 

다양한 경우에 대해 실행 파일을 만들어야 할 경우, 일일이 코드의 변수를 변경하고 IDE 에서 수동으로 빌드하는 것 보다는

 

스크립트를 작성해서 코드 변경 후 Makefile로 자동으로 빌드 돼도록 하는 게 편리하더군요.

 

이렇게 makefile 이 필요한 경우 Codeblock 의 Project 파일을 이용하여 makefile 을 만들어 주는 cbp2make 라는 이름의 툴이 있더군요.

 

cbp2make 는 아래 주소에서 다운로드 받으면 됩니다.

 

http://sourceforge.net/projects/cbp2make/

 

아래 그림의 빨간색 네모 부분을 클릭하고 기다리면 다운로드 됩니다.



 

필요하신 분들을 위해 여기도 파일을 첨부합니다.


cbp2make-stl-rev137-all.tar.7z

 


다운로드 후 압축을 풀고~ cbp2make-stl-rev137-all\bin\Release 폴더에 보시면~ 다음과 같이 세 개의 파일이 있습니다.


  cbp2make.exe : 윈도우용

cbp2make.linux-x86 : 리눅스 32비트용

cbp2make.linux-x86_64 : 리눅스 64비트용

 


각자 운영체제에 맞게 위 파일 중 하나를 사용하시면 되구요~

 

사용 방법은 아래 주소에 정리돼 있더군요.

 

http://sourceforge.net/apps/mediawiki/cbp2make/index.php?title=Main_Page

 


기본적인 사용방법은 콘솔에 다음과 같이 작성하면 됩니다.

 

cbp2make -in my_project.cbp -out Makefile

 

my_project.cbp 은 codeblock 프로젝트 이름입니다. -out 이후에 작성하고자 하는 파일이름을 적어 줄 수 있습니다.

 

위 예에서는 Makefile 이라는 이름의 파일이 만들어지게 되죠~


윈도우에서 gcc 를 사용할 때 저는 아래와 포스팅에서 밝힌 바와 같이 codeblock을 주로 사용합니다.

 


2012/10/14 - [유틸] - Codeblock doxygen plugin DoxyBlocks


2012/08/26 - [컴퓨터일반] - CodeBlock 에서 FFTW 라이브러리를 사용한 FFT 실습


2012/07/31 - [컴퓨터일반] - Codeblock 에서 DLL 사용하기



codeblock 과 mingw 를 통해 GCC 를 사용하지만, 역시나 IDE 를 사용하여 개발하는데 익숙하다 보니

 

Command Line 을 통한 빌드에는 참 익숙해 지지가 않더군요.

 

그래도 열심히 makefile 도 만들어 보고 command line 을 통한 빌드에 익숙해 지려고 노력하고 있습니다.

 

간단하게 아래 그림과 같은 코드에 C++ 코드에 대한 빌드시~

 

<main.cpp>

#include <iostream>

#include <cstdio>

#include "test.h"

 

using namespace std;

 

int main()

{

cout << "Hello world! make test" << endl;

cout << TTTT << endl ;

getchar();

return 0;

}

 

< test.h>

#ifndef TEST_H_INCLUDED

#define TEST_H_INCLUDED

#define TTTT (5678)

#endif // TEST_H_INCLUDED

 

makefile 은 다음과 같습니다.

 

< makefile>

WORKDIR = %cd%

 

CC = gcc.exe

CXX = g++.exe

AR = ar.exe

LD = g++.exe

WINDRES = windres.exe

 

INC =

CFLAGS = -Wall -fexceptions

RESINC =

LIBDIR =

LIB =

LDFLAGS =

 

INC_RELEASE = $(INC)

CFLAGS_RELEASE = $(CFLAGS) -O2

RESINC_RELEASE = $(RESINC)

RCFLAGS_RELEASE = $(RCFLAGS)

LIBDIR_RELEASE = $(LIBDIR)

LIB_RELEASE = $(LIB)

LDFLAGS_RELEASE = $(LDFLAGS) -s

OBJDIR_RELEASE = obj\\Release

DEP_RELEASE =

OUT_RELEASE = bin\\Release\\Test.exe

 

OBJ_RELEASE = $(OBJDIR_RELEASE)\\main.o

 

all: release

 

clean: clean_release

 

 

before_release:

    cmd /c if not exist bin\\Release md bin\\Release

    cmd /c if not exist $(OBJDIR_RELEASE) md $(OBJDIR_RELEASE)

 

after_release:

 

release: before_release out_release after_release

 

out_release: $(OBJ_RELEASE) $(DEP_RELEASE)

    $(LD) $(LDFLAGS_RELEASE) $(LIBDIR_RELEASE) $(OBJ_RELEASE) $(LIB_RELEASE) -o $(OUT_RELEASE)

 

$(OBJDIR_RELEASE)\\main.o: main.cpp Test.h

    $(CXX) $(CFLAGS_RELEASE) $(INC_RELEASE) -c main.cpp -o $(OBJDIR_RELEASE)\\main.o

 

clean_release:

    cmd /c del /f $(OBJ_RELEASE) $(OUT_RELEASE)

    cmd /c rd bin\\Release

    cmd /c rd $(OBJDIR_RELEASE)

 


makefile 이 들어있는 폴더에서 간단하게 다음과 같이 mingw32-make 라고 명령어를 쳐 넣어 주면~ 아래 그림처럼 간단하게 빌드가 되더군요.

 

물론 mingw32-make.exe 가 들어있는 폴더가 system path 로 잡혀 있어야 겠죠~

 

 

 


아래 포스팅에서도 볼 수 있는 바와 같이 저는 C/C++ 코딩시 주로 Codeblock 을 사용하는데요.

 

2012/07/31 - [컴퓨터일반] - Codeblock 에서 DLL 사용하기

 

2012/08/26 - [컴퓨터일반] - CodeBlock 에서 FFTW 라이브러리를 사용한 FFT 실습

 

 

코드에 대한 문서 생성시 주로 사용하는 Doxygen 관련 Codeblock  plugin 이 존재 하더군요.

 

문서의 구조를 그림으로 그려주는 Graphviz 아래 주소에서 다운로드 가능하고~

 

http://www.graphviz.org/Download_windows.php

 

Doxygen 은 아래주소에서 다운로드 하시면 됩니다.

 

http://www.stack.nl/~dimitri/doxygen/download.html#latestsrc

 

Codeblock doxygen plugin 의 이름은 DoxyBlocks 이구요~

 

DoxyBlocks 의 공식 홈피 주소는 아래와 같습니다.

http://wxsmithaddons.sourceforge.net/doxyblocks.html

 

윈도우용 plugin 파일은 아래 주소에서 다운로드 가능합니다.

 

http://sourceforge.net/projects/wxsmithaddons/files/DoxyBlocks/CodeBlocks10.5/DoxyBlocks.cbplugin/download

 

위 링크를 타고 가시면~ DoxyBlocks.cbplugin 라는 이름의 파일이 다운로드 되는데요~

 

Codeblock 에서 아래 그림처럼 Plugins → Manage Plugins 에 들어가서

 

 

 

Install new 을 누르고~ 위에서 다운로드한 DoxyBlocks.cbplugin 파일을 설정해 줍니다.

 

그럼 아래 그림처럼~ DoxyBlocks 메뉴가 생성됩니다~ 보시는 바와 같이 단축키가 지정되어 있어서 굉장히 편리하게 사용가능하더군요.

 

 

FFT (Fast Fourier transform)는 이산 푸리에 변환(Discrete Fourier transform, DFT) 를 빠르게 하기 위한 알고리즘으로 요즘 세상에 알게 모르게 굉장히 많이 사용되고 있습니다.


 그 응용이라고 하면 너무나 광범위 하죠~

 

우리가 거의 매일 사용하는 MP3 음악 파일은 DCT(discrete cosine transform) 를 이용한 손실 압축 방식인데 여기도 FFT 가 응용되고~ 요즘 한창 많이들 사용하고 있는 통신 방식인 LTE(Long Term Evolution)나 Wibro 등은 Orthogonal frequency-division multiplexing (OFDM)이라는 기술을 근간으로 하는데~ 이 OFDM 이라는 기술도 FFT 를 통해 구현 됩니다. WIFI 는 말 할 것도 없고 스펙트럼 분석에도 FFT 가 사용되죠~

 

http://ko.wikipedia.org/wiki/%EA%B3%A0%EC%86%8D_%ED%91%B8%EB%A6%AC%EC%97%90_%EB%B3%80%ED%99%98


FFT 는 요즘 그 쓰임이 많은 만큼 여러 언어에서 함수로 제공해 주는 경우가 많은데요~

 

그러한 툴들의 많은 경우가 오늘 소개해 드리는 FFTW 라는 라이브러리를 사용하곤 합니다.

 

FFTW 의 홈페이지는 다음과 같습니다.

www.fftw.org

 

FFTW 라는 명칭은 "Fastest Fourier Transform in the West" 라고 하네요~ 서부에서 가장 빠른 푸리에 트랜스폼이란건데..

 

속도에 대한 자부심이 느껴지네요.

 

FFTW 는 MIT 의 Matteo Frigo 와 Steven G. Johnson 라는 분이 만들었습니다.

 

소개를 보면 ~ one-dimensional 뿐만이 아니라 multi-dimensional transforms도 지원을 하고 임의의 크기에 대한 DFT 도 지원을 하는군요.

 

음성이나 이미지 쪽에서 많이 쓰이는 DCT 나 DST 등도 할 수 있고~ GNU GPL 라이센스의 Free 소프트웨어라고 설명되어 있네요.

 

Non-free licenses 는 MIT 를 통해 살 수 있다고 합니다.

 

FFTW 는 MATLAB 에도 들어있더군요. 물론 Mathworks 에서 Non-free licenses  로 구매한 거겠죠.

 

이전 포스팅에 소개했던 FreeMat 이란 프로그램에도 FFTW 를 사용했다고 하더군요. 


2012/08/20 - [유틸] - MATLAB 과 유사한 Open Source 프로그램 FreeMat

 

아!! 뭔지 모르겠지만 상도 받았군요. 1999 J. H. Wilkinson Prize for Numerical Software 라는 상을 받았다고 하는데~ 상 받을 만 하니깐 받았겠죠~

 

저자들이 쓴  논문("A Fast Fourier Transform Compiler" (in PLDI 1999)) 도 2009년에 The Most Influential PLDI Paper award 라는 상을 받았군요.

 

소개는 대충 여기까지 하고 이제부터 Codeblock 을 이용해서 간단하게 사용해 보죠.

 

다운로드는 링크는 다음과 같습니다.

http://www.fftw.org/download.html

 

윈도우용 DLL 파일은 아래 주소에서 받을 수 있구요.

http://www.fftw.org/install/windows.html

 

32비트 64비트 버전이 있으니 각자 자신의 OS 에 맞게 다운로드 받으시기 바랍니다.

  

 

저는 윈도우 7, 32 비트라 fftw-3.3.2-dll32.zip 파일을 다운로드 받았습니다. 압축을 풀면 필요한 fftw3.h.dll 파일이 들어있습니다.

 

이제 Codeblock 에서 Console application 으로 프로젝트를 하나 생성하고~ 

 

fftw3.h 파일은 CodeBlocks 이 설치된 하위 폴더인 include 폴더에 넣어 줍니다. 저의 경우는 아래 경로에 넣었습니다. 각자 설치 경로에 맞게 넣어 주세요~

 

C:\Program Files\CodeBlocks\MinGW\include

 

그리고 libfftw3l-3.dll, libfftw3f-3.dll, libfftw3-3.dll 파일들은 위에서 생성한 project 폴더에 소스와 같이 넣었습니다.

 

예제는 다음과 같이 간단하게 1024 크기로 FFT 하는 예제 입니다.

 

한번 따라 해 보실~ 분들을 위해 파일로 첨부합니다.



main.cpp

 

#include <iostream>

#include <fftw3.h>

 

using namespace std;

 

int main()

{

    fftw_complex *in, *out;

    fftw_plan p;

 

    int N=1024; // FFT size

 

    in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); // input buffer

    out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); // output buffer

    p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); // FFT 준비

 

    for (int n=0; n< N ; n++) // complex data sample 생성

    {

     in[n][0]=n; // real

in[n][1]=n; // imag

    }

 

    fftw_execute(p); // FFT 수행

 

cout << fixed;

cout.precision(10);

 

for (int n=0; n< N ; n++) // 결과 확인

    {

     cout << n << " real : " <<out[n][0] << " imag : " <<out[n][1] << endl ;

    }

 

    fftw_destroy_plan(p);

    fftw_free(in); fftw_free(out);

 

    return 0;

}

 

마지막으로 Codeblock 에서 아래 그림처럼 Settings >> Compiler and … 에 들어갑니다.

 

 

 

이제 아래 그림처럼 위에서 해당 폴더에 추가 했던 dll 파일들의 path 를 잡아줍니다.

  

이제 설정은 다 끝났습니다. F9 를 눌러서 실행해보면 다음과 같이 FFTW 라이브러리를 이용한 FFT 가 정상적으로 동작하는 것을 확인 할 수 있습니다. 요렇게요~

 

 

제대로 된 건가 해서 같은 입력 값에 대해 MATLAB으로 FFT 해서 비교해 보니 똑같이 나오더군요.

 

제가 한 예제는 아래 주소의 FFTW 의 매뉴얼에 있는 튜토리얼을 보고 따라 한 건데요~

http://www.fftw.org/fftw3_doc/

 

내용이 방대하니 필요한 부분만 쏙쏙~~ 골라서 보시기 바랍니다.

 


  1. 키드 2014.05.11 18:10

    안녕하세요 제가 fftw를 이용하여 가지고 있는 데이터를 푸리에 변환 시키려고 하는데 정말 모르겠어서 이렇게 댓글 남깁니다
    혹시 보시게된다면 메일 부탁드립니다
    pokssak26@naver.com

  2. 깜찍이홍섭이 2014.07.22 16:06

    블로그 대로 수행해보다가 codeblocks의 하위폴더가 share 폴더 밖에 없고 include 폴더는 없는데 이런 경우는 어떻게 해야 합니까?

    • 남성 2014.07.22 17:46 신고

      codeblock 을 컴파일러 제외 하고 설치 한 경우인가요? 뭐 그런 경우에는 fftw3.h 파일을 해당 프로젝트 추가해서 수행해도 됩니다. 어차피 컴파일러가 인식할수 있는 path 에만 넣으면 되니까요.

      또는 Mingw 를 따로 설치 했다면 mingw 를 설치한 폴더 하위에 include 폴더에 fftw3.h 를 넣으셔도 될 겁니다.

  3. goni 2016.05.17 22:26

    안녕하세요. c++언어로 리듬게임 제작 중인 학생 입니다. 덕분에 많은 도움 됬습니다.
    질문 하나 하고 싶은데.. 혹시 fmod로 mp3 파일 데이터 추출 해서 적용 하려고 하는데 방법 아시나요?

  4. 2018.05.21 15:18

    비밀댓글입니다

    • 남성 2018.05.21 15:54 신고

      통신 전공했고 통신 분야 회사, 소프트웨어 회사, 자동차 회사 등을 거치면서 주로 알고리즘 관련한 개발을 했습니다.

윈도우에서 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 를 눌러서 실행을 시키면 ~~

 

 

이렇게 실행 되는걸 확인 할 수 있습니다.


+ Recent posts