inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

독하게 되새기는 C 프로그래밍

동적 라이브러리 개발

declspec(dllimport) 와 extern 은 무슨차이가 있나요?

해결된 질문

1181

infeet

작성한 질문수 5

0

 dll 을 사용하는 쪽에서

__declspec(dllimport) 대신에 extern 을 써도

 

결과가 같던데 다른 차이가 있을까요?

c

답변 1

3

널널한 개발자

__declspec(dllimport)는 extern 선언과 비슷하게 사용되는 MS정의 키워드 입니다. 이 키워드는 DLL에 정의된 함수를 선언하는 기능에서는 extern과 같습니다. 다만 동적인 경우와 정적인 경우 모두에 사용됩니다. 여기서 동적이라는 것은 DLL을 '명시적 로드'하는 경우를 포함합니다.

그러나 extern은 동적으로 명시적 로드하는 경우과 전혀 관련이 없고 런타임(동적)이 아니라 링크 타임에 선언에 대한 실제 정의를 찾아 링크하는 경우에 사용합니다. 따라서 동적이 아니라 '정적'인 경우에만 사용됩니다.

DLL라이브러리를 로드하는 방식은 묵시적인 방법과 명시적인 방법이 있는데 묵시적인 방법의 사용예는 '정적'인 경우에 해당하며 사실상 extern을 사용하는 것과 같다 하겠습니다. 문제가 없었다면 DLL을 묵시적 로드한 경우에 해당합니다. 이 경우 링크 타임에 반드시 .lib 파일이 필요합니다.

참고하시기 바랍니다.

질문이 있습니다(강의와 거의 상관이 없는)

0

75

2

컴파일러 서적 질문입니다

0

161

1

코드생성 및 최적화 질문입니다

0

159

1

Hex Editor를 이용한 다국어 번역 관련 질문입니다

0

210

2

큐의 배열을 넘겨도 정상작동합니다

0

157

2

캐너리비트에 관하여 질문

0

210

3

상수화된 문자열에 질문있습니다

0

171

1

함수 호출 매개변수 전달에 대한 질문 드립니다.

0

189

1

단항 증감 연산에 따른 다른 접근에 대한 질문있습니다.

0

209

2

함수호출 규약 종류에 따른 장단점 여부

0

227

2

정적라이브러리 링크 오류

0

225

1

const char *를 char*에 초기화할때의 컴파일 에러 처리 방식 문의

0

353

2

pszParam 수정이 왜 Hello World print에도 영향을 미치는지 이해가 잘 안됩니다.

0

251

2

비선형 자료구조

0

311

1

자료 구조 공부 후에

0

353

1

강의자료 관련

0

253

1

마지막에 말씀하신 부분 질문드립니다.

0

213

1

문자열 관련 질문 드립니다

0

290

1

라이브러리

0

272

1

부동소수점

0

389

1

왜 변수 주소 사이에 offset이 있는 건가요?

0

301

2

stack 쌓는 순서

0

505

1

함수호출이랑 쓰레드

0

410

1

리눅스 환경도 스레드 생성 원리는 동일한건가요?

0

527

1