[C++] ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ
1. ์ฉ์ด์ ๋ฆฌ
- ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Standard Library) : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (External Library) : ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ํฌํจ๋์ด ์์ง ์์ ์ถ๊ฐ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ฐ๋ฐ์๋ค์ด ์ ์ํ์ฌ ๊ณต์ ํ๋ฉฐ, ํน์ ๊ธฐ๋ฅ์ด๋ ์์ ์ ์ํํ๊ธฐ ์ํด ์ฌ์ฉ
- ๋ชฉ์ ์ฝ๋ (Object Code) : ์ปดํ์ผ๋ฌ๋ ์ด์ ๋ธ๋ฌ๊ฐ ์์ค์ฝ๋ ํ์ผ์ ์ปดํ์ผํ์ฌ ์์ฑํ๋ ํ์ผ
๊ตฌ๋ถ | ํ๊ฒฝ | ํ์ฅ์ |
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Linux | *.a |
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Linux | *.so |
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Windows | *.lib |
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ | Windows | *.dll |
2. ๋ผ์ด๋ธ๋ฌ๋ฆฌ
- ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ค๊ณผ ๋งํฌ๋๊ธฐ ์ํด ์กด์ฌํ๋ ํ๋ ์ด์์ ์๋ธ๋ฃจํด์ด๋ ํจ์๋ค์ ์งํฉ (์์, C์ธ์ด์ stdlib)
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์์ค์ ์ธ๋ถ ์ ์ถ ์์ด ๊ณต์ ๊ฐ๋ฅ
- ์ปดํ์ผ๋ ํํ์ธ ๋ชฉ์ ์ฝ๋ (Object Code) ํํ๋ก ์กด์ฌํ๋ฉฐ ์ปดํ์ผ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฐ๊ฒฐ๋ ํ๋ก๊ทธ๋จ์ ์ปดํ์ผ ์๊ฐ ๋จ์ถ
- ๋ชฉ์ ์ฝ๋์ ๊ฒฐํฉํ๋ ๋ฐฉ๋ฒ๊ณผ ์์ ๋ฐ๋ผ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ๊ตฌ๋ถ
2. ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Static Library)
- ํ๋ก๊ทธ๋จ ๋น๋ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ์ฝ๋๋ฅผ ์คํ ํ์ผ์ ํฌํจ
- ๋ง์ปค์ ์ํด์ ํ๋ก๊ทธ๋จ๊ณผ ๋งํน๋๋ฉฐ ์ฌ์ฉํ๋ ค๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ก๊ทธ๋จ ์ปดํ์ผ ์์ ์ ๋ด์ฅ์ํค๊ธฐ ๋๋ฌธ์ ํ๋ก๊ทธ๋จ ์ฉ๋ ์ฆ๊ฐ
- ์์คํ ํ๊ฒฝ์ด ๋ณํด๋ ํ๋ก๊ทธ๋จ์ ์ํฅ์ด ์๊ธฐ ๋๋ฌธ์ ์์ ์ ์ผ๋ก ํ๋ก๊ทธ๋จ ์ฌ์ฉ ๊ฐ๋ฅ
3. ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Dynamic Library)
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ๊ณผ ์ฝ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌํ๊ณ ๊ฐ ํ๋ก๊ทธ๋จ์ด ์ด๋ฅผ ๊ณต์ ํ๋ ๋ฐฉ์
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ ๋ฐ์ดํธ ๋ ๋ ๋ง๋ค ํ๋ก๊ทธ๋จ์ ์ฌ์ปดํ์ผ ํด์ผํ๋ ๋ถํธํจ ๊ฐ์
- ํ๋ก๊ทธ๋จ ์คํ ์์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๊ฒฐํ๊ธฐ ๋๋ฌธ์ ์คํ ํ์ผ์ ์ฉ๋์ด ๊ฐ๋ฒผ์์ง
- ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ๊ฒ ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ง๋ง ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ด์ฉ์ด ํ์ํ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ
- ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์คํ ํ์ผ์ ์ฐ๊ฒฐํ๊ธฐ ์ํด์ ๋ฌต์์ ์ฐ๊ฒฐ, ๋ช ์์ ์ฐ๊ฒฐ ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ ํํด์ผ ํ๋ค.
1. ๋ฌต์์ (์์์ ) ์ฐ๊ฒฐ (Implicit Linking)
- ์คํ ํ์ผ ์์ฒด์ DLL์ ํน์ ํจ์๋ฅผ ์ฌ์ฉํ๋ค๋ ์ ๋ณด๋ฅผ ํฌํจ์ํค๊ณ OS๊ฐ ํ๋ก๊ทธ๋จ ์คํ ์ ํด๋น ํจ์๋ค์ ์ด๊ธฐํ ํ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
- *.lib ํ์ผ์ ์ด์ฉํ์ฌ ์ฐ๊ฒฐ๋๋ฉฐ *.lib ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐํ์์ DLL์ ํจ์๋ฅผ ์ฐธ์กฐ
2. ๋ช ์์ ์ฐ๊ฒฐ (Explicit Linking)
- ํ๋ก๊ทธ๋จ ์คํ ์ค์ API๋ฅผ ์ฌ์ฉํ์ฌ DLL ํ์ผ์ด ์๋์ง ๊ฒ์ฌํ๊ณ ๋์ ์ผ๋ก ์ํ๋ ํจ์๋ง ๋ถ๋ฌ์์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
4. ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ (Shared Library)
- ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ผํ๊ฒ ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋์ง๋ง ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ
C++์์์ ๋ชจ๋ ๊ฐ์
C++20์ ๋ชจ๋์ ํค๋ ํ์ผ์ ๋ํ ์ต์ ๋์์ ์ ๊ณตํฉ๋๋ค.
learn.microsoft.com
C++์ ๋ช ๋ช ๋ ๋ชจ๋ ์์ต์
C++20์ ๋ช ๋ช ๋ ๋ชจ๋์ ํค๋ ํ์ผ์ ๋ํ ์ต์ ๋์์ ์ ๊ณตํฉ๋๋ค.
learn.microsoft.com
CREATE EXTERNAL LIBRARY(Transact-SQL) - SQL Server
CREATE EXTERNAL LIBRARY(Transact-SQL) ์ํฐํด 05/30/2023 ๊ธฐ์ฌ์ 16๋ช ํผ๋๋ฐฑ ์ด ๋ฌธ์์ ๋ด์ฉ --> ์ ์ฉ ๋์: SQL Server 2017(14.x) ์ด์ Azure SQL Managed Instance R, Python ๋๋ Java ํจํค์ง ํ์ผ์ ์ง์ ๋ ๋ฐ์ดํธ ์คํธ๋ฆผ ๋
learn.microsoft.com
[Linking] ์ ์ ๋งํน๊ณผ ๋์ ๋งํน์ ์ฐจ์ด
์ด๋ฒ ์๊ฐ์๋ ์ ์ ๋งํน๊ณผ ๋์ ๋งํน์ ์ฐจ์ด์ ๋ํด ์ดํดํด๋ณด์. ์๋์ ๊ทธ๋ฆผ์์ ์ผ์ชฝ์ ์ ์ ๋งํน ๋ฐฉ์์ด๊ณ ์ค๋ฅธ์ชฝ์ ๋์ ๋งํน ๋ฐฉ์์ด๋ค. ๋จผ์ ๊ธ์ ์ฐฌ์ฐฌํ ์ฝ์ ๋ค ๋ค์ ๊ทธ๋ฆผ์ ์ดํด๋ณด๋
live-everyday.tistory.com
๋์ /๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Dynamic/ Shared Library)์ ๋์ ๋งํน(Dynamic Linking)
๋์ /๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ฐํ์์ ๋งํฌ/๋ก๋๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋๋ค. ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Dynamic Linking)์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Dynamic Loading)๋ ๋๊ฐ์ด ๋ฐํ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฌ๋๋๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
ledpear.tistory.com
์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(Static Library, Dynamic Library)
๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์์กดํ๋ ํ๋ก๊ทธ๋จ์ ์์คํ ์ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์ค์น๋์ง ์์ผ๋ฉด ๋์ํ์ง ์๋๋ค. ...
blog.naver.com
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ-ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ(standard library), ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ข ๋ฅ · ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ · ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ํ์ค๋ผ์ด๋ธ๋ฌ๋ฆฌ(standard library) · ํ๋ก๊ทธ๋๋ฐ์ธ์ด์ ํจ๊ป ์ ์์ฌ์์ ์ ๊ณต๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์๋ฏธํฉ๋๋ค. · ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๊ฐ ๊ธฐ๋ณธ์ ์ผ
codedragon.tistory.com
๋์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Index
goodgid.github.io
C++/extern "C" ๋ฅผ ์ฐ๋ ์ด์
๋ค์ด๊ฐ๊ธฐ ์์, = ๋ค์ ๋งน๊ธ๋ง(Name Mangling) = ์ฝ๋์์ ์ ์ธํ ํจ์๋ ๋ณ์์ ์ด๋ฆ์ ์ปดํ์ผ๋ฌ๊ฐ ์ปดํ์ผ ๋จ๊ณ์์ ์ผ์ ํ ๊ท์น์ ๊ฐ์ง๊ณ ๋ณํํ๋ ๊ฒ. ๋งน๊ธ๋ง์ ์์ด ์ฌ์ ์์ ์ฐพ์๋ณด๋ฉด ๋๋์ง ํ
hyacinth.byus.net
[C++ DLL] ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ํ ์ดํด
์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋? ์ฝ๋ฉ์ ํ๋ค ๋ณด๋ฉด ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ์ ๊ฑฐ์ ํ์์ ๋๋ค. ํ๋๋ถํฐ ์ด๊น์ง ์ผ์ผ์ด ๋ง๋ค์ด์ ํ๋ก๊ทธ๋จ์ ์ ์ํ๊ธฐ๋ ์ฝ์ง๊ฐ ์๊ธฐ ๋๋ฌธ์ด์ฃ . ์๋ฅผ ๋ค์ด, ํ๋ก๊ทธ๋จ์ ๋์
luckygg.tistory.com
[C++20] ๋ชจ๋(module)
๋ชจ๋(module) ์ด๋? C++20 ์ด์ ์ C++์์๋ ํ์ํ ํจ์ ๋๋ ํด๋์ค๋ฅผ ๋ถ๋ฌ์ค๊ธฐ ์ํด #include ์ ์ฒ๋ฆฌ๋ฌธ์ ์ด์ฉํด ์๋ค. ์ด๋ฐ ํค๋ ํ์ผ ๋ฐฉ์์ ๋ฌธ์ ๋..๋ง์ง๋ง ๊ทธ ์ค์ ํ์๊ฐ ๊ฐ์ฅ ํฌ๋ฆฌํฐ์ปฌํ๊ฒ ์
kukuta.tistory.com