EXPORTS

내보내기 함수 또는 데이터를 포함하는 하나 이상의 definitions로 이루어진 섹션을 파생시킵니다.각 정의는 서로 다른 줄에 있어야 합니다.

EXPORTS
definitions

설명

EXPORTS 키워드는 첫 번째 정의와 같은 줄 또는 앞의 줄에 있을 수 있습니다..def 파일에는 하나 이상의 EXPORTS 문이 들어 있을 수 있습니다.

내보내기 definitions의 구문은 다음과 같습니다.

entryname[=internalname] [@ordinal [NONAME]] [PRIVATE] [DATA]

entryname은 내보내려는 함수 또는 변수 이름으로서필수 요소입니다.내보내기 이름이 DLL에 있는 이름과 다른 경우에는 DLL의 내보내기 이름을 internalname 에 지정합니다.예를 들어, DLL이 func1()이라는 함수를 내보내는데 이 함수를 func2()로 사용하려면 다음과 같이 지정합니다.

EXPORTS
func2=func1

@ordinal을 사용하면 함수 이름이 아닌 번호가 DLL의 내보내기 테이블에 들어가도록 지정됩니다.이렇게 하면 DLL의 크기를 최소화하는 데 유용합니다..LIB 파일에는 서수와 함수 간의 매핑이 들어 있으므로 DLL을 사용하는 프로젝트에서와 마찬가지로 함수 이름을 사용할 수 있게 됩니다.

선택적 키워드인 NONAME을 사용하면 함수를 서수로만 내보내므로 결과 DLL의 내보내기 테이블 크기를 줄일 수 있습니다.하지만 DLL에 대해 GetProcAddress를 사용하려는 경우에는 이름이 유효하지 않게 되므로 서수를 알아야 합니다.

선택적 키워드인 PRIVATE은 LINK로 생성된 가져오기 라이브러리에 entryname이 포함되지 않도록 합니다.이 키워드는 LINK로 생성된 이미지에 포함된 내보내기에는 적용되지 않습니다.

선택적 키워드인 DATA는 내보내기가 코드가 아니라 데이터임을 지정합니다.예를 들면, 다음과 같이 데이터 변수를 내보낼 수 있습니다.

EXPORTS
i DATA

동일한 내보내기에 대해 PRIVATEDATA를 사용할 때에는 PRIVATEDATA 앞에 와야 합니다.

정의를 내보내는 데는 다음과 같은 세 가지 방법을 사용합니다(권장 순서에 따라 나열).

  1. 소스 코드에 __declspec(dllexport) 키워드가 있는 경우

  2. .def 파일에서 EXPORTS 문 사용

  3. LINK 명령의 /EXPORT 사양

동일한 프로그램에서 이 세 가지 방법을 모두 사용할 수 있습니다.LINK에서는 내보내기가 들어 있는 프로그램을 빌드할 때 해당 빌드에 .exp 파일이 사용되지 않은 경우 가져오기 라이브러리도 만듭니다.

다음은 EXPORTS 섹션의 예제입니다.

EXPORTS
   DllCanUnloadNow      @1     PRIVATE   DATA
   DllWindowName = Name        DATA
   DllGetClassObject    @4 NONAME   PRIVATE
   DllRegisterServer    @7
   DllUnregisterServer

.def 파일을 사용하여 DLL에서 변수를 내보낼 때에는 해당 변수에 대해 **__declspec(dllexport)**을 지정할 필요가 없습니다.하지만 해당 DLL을 사용하는 모든 파일에서는 데이터 선언에 여전히 **__declspec(dllimport)**을 사용해야 합니다.

참고 항목

참조

모듈 정의 문의 규칙