선언 및 정의 (C)Definitions and Declarations (C)

Microsoft 전용Microsoft Specific

DLL 인터페이스는 시스템의 일부 프로그램에서 내보내지는 것으로 알려진 모든 항목(함수 및 데이터), 즉 dllimport 또는 dllexport로 선언되는 모든 항목을 참조합니다.The DLL interface refers to all items (functions and data) that are known to be exported by some program in the system; that is, all items that are declared as dllimport or dllexport. DLL 인터페이스에 포함된 모든 선언은 dllimport 또는 dllexport 특성을 지정해야 합니다.All declarations included in the DLL interface must specify either the dllimport or dllexport attribute. 하지만 정의는 dllexport 특성만 지정할 수 있습니다.However, the definition can specify only the dllexport attribute. 예를 들어, 다음 함수 정의는 컴파일러 오류를 생성합니다.For example, the following function definition generates a compiler error:

#define DllImport   __declspec( dllimport )  
#define DllExport   __declspec( dllexport )  

DllImport int func()    /* Error; dllimport prohibited in */  
                        /* definition. */  
{  
   return 1;  
}  

다음 코드도 오류를 생성합니다.This code also generates an error:

#define DllImport   __declspec( dllimport )  
#define DllExport   __declspec( dllexport )  

DllImport int i = 10;      /* Error; this is a definition. */  

그러나 다음은 올바른 구문입니다.However, this is correct syntax:

#define DllImport   __declspec( dllimport )  
#define DllExport   __declspec( dllexport )  

DllExport int i = 10;      /* Okay: this is an export definition. */  

dllimport가 선언을 암시하는 반면 dllexport는 정의를 암시합니다.The use of dllexport implies a definition, while dllimport implies a declaration. externdllexport 키워드를 사용하여 선언을 강제해야 합니다. 그렇지 않으면 정의가 암시됩니다.You must use the extern keyword with dllexport to force a declaration; otherwise, a definition is implied.

#define DllImport   __declspec( dllimport )  
#define DllExport   __declspec( dllexport )  

extern DllImport int k;   /* These are correct and imply */  
Dllimport int j;          /* a declaration. */      

Microsoft 전용 종료END Microsoft Specific

참고 항목See Also

DLL 가져오기 및 내보내기 함수DLL Import and Export Functions