[C++ DLL] Visual Studio C++ ์์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
์ง๋ ํฌ์คํ ์์ C++ DLL ์์ฑ ๋ฐฉ๋ฒ์ ์๊ฐํ์์ต๋๋ค.
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
์ด๋ฒ ํฌ์คํ ์์๋ ์์ฑ๋ DLL์ ์์์ ๋งํฌํ๋ ๋ฐฉ๋ฒ์ ์๊ฐํ๊ฒ ์ต๋๋ค.
์์์ ๋งํน(Implicit Linking)
์์์ ๋งํน์ ์คํ ํ์ผ(*.exe) ์์ฒด์ DLL์ ํจ์ ์ ๋ณด๋ฅผ ํฌํจ์ํค๋ ๋ฐฉ์์ด๋ฉฐ, ์คํ ํ์ผ๊ณผ ๋์ผํ ๊ฒฝ๋ก์ dllํ์ผ์ด ์์ด์ผ ํฉ๋๋ค.
์ง๋ ํฌ์คํ ์์ ๋ค๋ค๋ ์์ ์ฝ๋์ ์ฝ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํ๊ฒ ์ต๋๋ค. ์๋ฃจ์ ์ ์ ํํ๊ณ ์ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
์ฝ์ ์ฑ์ ์ ํํ๊ณ MainDLL ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
ํ๋ก์ ํธ๊ฐ ์์ฑ๋๋ฉด MainDLL.cpp
์ ์๋์ ๊ฐ์ด ์์ฑํฉ๋๋ค.
#include <iostream>
#include "../CreateDLL/MyMath.h"
#pragma comment(lib, "../x64/Debug/CreateDLL.lib")
int main()
{
std::cout << "Sum: " << Sum(5.0, 3.0) << std::endl;
std::cout << "Mul: " << Mul(5.0, 3.0) << std::endl;
}
๊ทธ๋ฆฌ๊ณ MainDLL ํ๋ก์ ํธ๋ฅผ ์์ ํ๋ก์ ํธ๋ก ์ค์ ํ๊ณ ๋น๋ ๋ฐ ์คํํฉ๋๋ค.
์คํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
์ ๋ฐ๋ผ์ค์
จ๋์? ์์์ ๋งํน์ ํ๋ก์ ํธ ์ค์ ์ include
, library
, dll
๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ฉด ๋๋ฉ๋๋ค. ๊ทธ๋ผ ๊ฐ ํญ๋ชฉ์ ์๋ฏธ๋ ๋ฌด์์ผ๊น์? ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํญ๋ชฉ | ์ค๋ช |
include | dll ์์ฑ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ํค๋ ํ์ผ |
library | dll ํ๋ก์ ํธ ๋น๋ ํ ์์ฑ๋ lib ํ์ผ |
dll | dll ํ๋ก์ ํธ ๋น๋ ํ ์์ฑ๋ dll ํ์ผ |
๊ฐ ํญ๋ชฉ๋ณ๋ก ์ข ๋ ์์ธํ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
ํค๋ ํ์ผ ์ถ๊ฐํ๊ธฐ
MainDLL.cpp
์์ ์๋์ ์ฝ๋ ํ ์ค์ด, dll ํค๋ ํ์ผ์ include ํ๋ ๊ฒ์
๋๋ค.
#include "../CreateDLL/MyMath.h"
์์์ฒ๋ผ ๊ฒฝ๋ก๋ฅผ ์ง์ ์ ๋ ฅํด๋ ๋๊ณ , ์๋๋ฉด ์๋์ฒ๋ผ ํ๋ก์ ํธ ์์ฑ์ C/C++ > ์ผ๋ฐ > ์ถ๊ฐ ํฌํจ ๋๋ ํฐ๋ฆฌ์ ์ค์ ํ ์ ์์ต๋๋ค.
๋ผ์ด๋ธ๋ฌ๋ฆฌ(lib)ํ์ผ ์ถ๊ฐํ๊ธฐ
MainDLL.cpp
์์ ์๋์ ์ฝ๋ ํ ์ค์ด, lib ํ์ผ์ ๋งํฌํ๋ ๊ฒ์
๋๋ค.
#pragma comment(lib, "../x64/Debug/CreateDLL.lib")
ํค๋ ํ์ผ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ๊ฒฝ๋ก๋ฅผ ์ง์ ์ ๋ ฅํ๊ฑฐ๋ ํ๋ก์ ํธ ์์ฑ์ ์ค์ ํ ์ ์์ต๋๋ค. ๋ง์ปค > ์ผ๋ฐ > ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋๋ ํฐ๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ์ ๋ ฅํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ปค > ์
๋ ฅ > ์ถ๊ฐ ์ข
์์ฑ์ CreateDLL.lib
๋ฅผ ์
๋ ฅํฉ๋๋ค.
DLL ๊ฒฝ๋ก ์ถ๊ฐํ๊ธฐ
๋๋ฒ๊น ๋ชจ๋์์ ์คํ ํ์ผ ๊ฒฝ๋ก์ dll ํ์ผ์ ์ฎ๊ฒจ๋๊ธฐ ๊ท์ฐฎ๋ค๋ฉด, ์๋์ ์ค์ ์ผ๋ก ํด๋น ๊ฒฝ๋ก์ dll์ ๋ถ๋ฌ์ฌ ์ ์์ต๋๋ค. ํ๋ก์ ํธ ์์ฑ > ๋๋ฒ๊น > ํ๊ฒฝ์ path=๊ฒฝ๋ก;%PATH%์ ๊ฐ์ด ์ ๋ ฅํฉ๋๋ค.
์ฐธ๊ณ ๋ก ๋ณธ๋ฌธ์ ์์ ์ฝ๋์ ๊ฒฝ์ฐ, CreateDLL ํ๋ก์ ํธ์์ ์์ฑ๋ dll
๋ฐ lib
ํ์ผ ๊ฒฝ๋ก์ MainDLL ํ๋ก์ ํธ์ ์คํ ํ์ผ ๊ฒฝ๋ก๊ฐ ๋์ผํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ dll ๊ฒฝ๋ก ์ค์ ์์ด๋ ๋์ํฉ๋๋ค.
์ฌ๊ธฐ๊น์ง ์ ๋ฐ๋ผ์ค์ จ๋์? ์์์ ์ธ๊ธํ ๋๋ก ํ๋ก์ ํธ์ ์ค์ ์ ์ ๋ ฅํ๋ค๋ฉด, ์๋์ ๊ฐ์ด ์ฌ์ฉ์ด ๊ฐ๋ฅํด์ง๋๋ค.
#include <iostream>
//#include "../CreateDLL/MyMath.h" //<-- ํ๋ก์ ํธ ์์ฑ์ ์
๋ ฅ
//#pragma comment(lib, "../x64/Debug/CreateDLL.lib") //<-- ํ๋ก์ ํธ ์์ฑ์ ์
๋ ฅ
#include "MyMath.h"
int main()
{
std::cout << "Sum: " << Sum(5.0, 3.0) << std::endl;
std::cout << "Mul: " << Mul(5.0, 3.0) << std::endl;
}
๋ณธ๋ฌธ์ ์์ ๋ ์๋ ์ฒจ๋ถ๋ ํ์ผ์ ์ฐธ๊ณ ํด ์ฃผ์ธ์.
๋ค์ ํฌ์คํ ์์๋ ๋ช ์์ ๋งํน(Explicit Linking)์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
'Programming > C++' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote
๋ค๋ฅธ ๊ธ
-
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] C++ ํด๋์ค๋ฅผ DLL๋ก ๋ง๋ค๊ณ ์ฌ์ฉํ๊ธฐ (์์ ํฌํจ)
2020.12.13 -
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ ๋ช ์์ ๋งํฌํ๊ธฐ (์์ ํฌํจ)
2020.12.10 -
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
[C++ DLL] Visual Studio C++ DLL ์์ฑํ๊ธฐ (์์ ํฌํจ)
2020.12.04 -
[C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด
[C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด
2020.11.28