윤성우 뇌를자극하는 윈도우즈 시스템 프로그래밍중에 dll에 대하여 공부중인데요,


dll파트에서 __declspec(dllexport)와 , __ declspec(dllimport) 에 대한 키워드가 나왔습니다.


void TestFunc()

{

cout<<"Hello World" <

}


TestFunc에 대한 함수를 dll로 만들려 한다면,



TestFunc.cpp

__declspec(dllexport)

void TestFunc()

{

cout<<"Hello World" <

}


TestFunc.h

__declspec(dllimport)

void TestFunc();


이런식으로 헤더파일에는 dllimport를 , cpp 정의부분에는 dllexport를 쓰면 되는건가요?


그런데, 본문중에서

"DLL을 빌드할때 필요로 하는 함수선언과, DLL을 참조할 때 필요로하는 함수 선언이 다르다는 문제가 있다.

하나는 import선언을, 하나는 export 선언을 해야만 한다. 이를 위해서 두개의 헤더파일이 필요하다"


라는 내용이 있는데, 제 생각에는 어차피 선언 부에는 __declspec(dllimport) 키워드를 붙인 헤더파일이 한개만 필요 할텐데

왜 2개가 필요하다고 했는지 잘 이해가 안됩니다...


제가 뭔가를 놓치고 있는건가요??


아니면 그냥 dllimport는 선언부, dllexport 정의부에 쓴다 라고 단순하게 이해하면 되는건가요??