ํด๋น ๊ฒ์๊ธ์ ์๋ ๊ฐ๋ฐํ๊ฒฝ์ ์ฌ์ฉํ์ฌ ์์ฑ๋จ
IDE : Visual Studio 2022
Language : C++ 14
1. ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ๋ด์ฉ์ ์๋ ๊ฒ์๊ธ์ ์ฐธ๊ณ
[C++] ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ
1. ์ฉ์ด์ ๋ฆฌ ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Standard Library) : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (External Library) : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํฌํจ๋์ด ์์ง ์์ ์ถ๊ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
ssvip.tistory.com
2. ํ๋ก์ ํธ ์์ฑ
- ํ๋ก์ ํธ๋ช : DLL_Project
- ์๋ฃจ์ ๋ช : DLL_Project
3. ์ฝ๋ ์์ฑํ๊ธฐ
- ํด๋น ํ๋ก์ ํธ์์๋ ๊ฐ๋จํ ์ฌ์น์ฐ์ฐ์ ์ํํ๋ DLL์ ์์ฑํ๋ค.
- MyMath.h, MyMath.cpp ์ถ๊ฐ
- extern "C" __declspec(dllexport) : ํด๋น ํค์๋๊ฐ ๋ถ์ ํจ์๋ DLL ์ธ๋ถ์ ๋ ธ์ถ
- extern "C" __declspec(dllimport) : DLL์ ์ ์๋ ํจ์๋ฅผ ํธ์ถํ๊ธฐ ์ํด ์ฌ์ฉ
3.1 MyMath.h
- #ifdef CREATEDLL_EXPORTS๋ CREATEDLL_EXPORTS๋ผ๋ ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ ์๋์ด์๋์ง ํ์ธํ๋ ์กฐ๊ฑด๋ฌธ์ด๋ค.
- CREATEDLL_EXPORTS ์ ์ฒ๋ฆฌ๊ธฐ๊ฐ ์ ์๋์ด์์ผ๋ฉด MYMATH_DECLSPEC๋ __declspec(dllexport)๋ฅผ ์๋ฏธํ๊ณ ์ ์ ๋์ด ์์ง ์์ผ๋ฉด __declspec(dllimport)๋ฅผ ์๋ฏธํ๋ค.
- ํด๋น ์ ์ฒ๋ฆฌ๊ธฐ๋ ํ๋ก์ ํธ ์์ฑ > C/C++ > ์ ์ฒ๋ฆฌ๊ธฐ > ์ ์ฒ๋ฆฌ๊ธฐ ์ ์ ํญ๋ชฉ์์ ํ์ธ๊ฐ๋ฅํ๋ฉฐ ์ฌ์ฉ์๊ฐ ์์๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ์ ์ฒ๋ฆฌ๊ธฐ ์กฐ๊ฑด๋ฌธ์ ์์ ํ ์ ์๋ค.
#pragma once
#ifdef CREATEDLL_EXPORTS
#define MYMATH_DECLSPEC __declspec(dllexport)
#else
#define MYMATH_DECLSPEC __declspec(dllimport)
#endif
extern "C" MYMATH_DECLSPEC double Sum(double a, double b);
extern "C" MYMATH_DECLSPEC double Sub(double a, double b);
extern "C" MYMATH_DECLSPEC double Mul(double a, double b);
extern "C" MYMATH_DECLSPEC double Div(double a, double b);
3.2 MyMath.cpp
- MyMath.h๋ฅผ ์ถ๊ฐํ๊ณ Sum, Sub, Mul, Div ํจ์๋ฅผ ์ ์ํ๋ค.
#include "MyMath.h"
double Sum(double a, double b) {
return a + b;
}
double Sub(double a, double b) {
return a - b;
}
double Mul(double a, double b) {
return a * b;
}
double Div(double a, double b) {
return a / b;
}
3.3 ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋ ์ ์ธ
- ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ ์ค๋ฅ๊ฐ ์ถ๋ ฅ๋๋ค.
- ํ๋ก์ ํธ ์์ฑ > C/C++ > ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋ > ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋ ํญ๋ชฉ์ ๋ฏธ๋ฆฌ ์ปดํ์ผ๋ ํค๋ ์ฌ์ฉ ์ํจ์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ์ ์์ ์ผ๋ก ๋น๋๋๋ค.
4. ํ๋ก์ ํธ ๋น๋
- ํ๋ก์ ํธ๋ฅผ ๋น๋ํ๋ฉด ์ง์ ๋ ๊ฒฝ๋ก์ *.dll๊ณผ *.lib ํ์ผ์ด ์์ฑ๋๋ค.
- ํด๋น ํ์ผ๋ค์ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ํ๋ก์ ํธ์์ DLL์ ๋ถ๋ฌ์ ์ฌ์ฉํ ์ ์๋ค.
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
์ง๋ ํฌ์คํ ์์ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ ๋์ /์ ์ ๋งํน์ ๋ํ ์ด๋ก ์ ์ธ ์๊ฐ๋ฅผ ํ์์ต๋๋ค. [C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด [C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? ์ฝ๋ฉ
luckygg.tistory.com
'๊ฐ๋ฐ๐ป > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ (0) | 2023.06.23 |
---|