๊ฐœ๋ฐœ๐Ÿ’ป/C++

[C++] ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ข…๋ฅ˜

VIP 2023. 6. 23. 12:30
728x90
๋ฐ˜์‘ํ˜•

 

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

728x90
๋ฐ˜์‘ํ˜•