다음을 통해 공유


/EXPORT(함수 내보내기)

프로그램에서 이름 또는 서수 또는 데이터로 함수를 내보냅니다.

구문

/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]

설명

/EXPORT 옵션은 다른 프로그램에서 함수를 호출하거나 데이터를 사용할 수 있도록 프로그램에서 내보낼 함수 또는 데이터 항목을 지정합니다. 내보내기가 일반적으로 DLL에 정의됩니다.

항목 이름은 호출 프로그램에서 사용할 함수 또는 데이터 항목의 이름입니다. 서수는 1에서 65,535 사이의 내보내기 테이블에 인덱스를 지정합니다. 서수를 지정하지 않으면 LINK에서 인덱스를 할당합니다. NONAME 키워드는 함수를 항목 이름 없이 서수로만 내보냅니다.

DATA 키워드는 내보낸 항목이 데이터 항목임을 지정합니다. 클라이언트 프로그램의 데이터 항목은 extern __declspec(dllimport)를 사용하여 선언해야 합니다.

정의를 내보내는 방법에는 권장되는 사용 순서로 나열된 네 가지 방법이 있습니다.

  1. 소스 코드의 __declspec(dllexport)

  2. .def 파일의 EXPORTS

  3. LINK 명령의 /EXPORT 사양

  4. 소스 코드의 주석 지시문입니다.#pragma comment(linker, "/export: definition ")

이러한 모든 메서드는 동일한 프로그램에서 사용할 수 있습니다. LINK가 내보내기를 포함하는 프로그램을 빌드하는 경우 빌드에서 .exp 파일을 사용하지 않는 한 가져오기 라이브러리도 만듭니다.

LINK는 데코레이팅된 형식의 식별자를 사용합니다. 컴파일러는 .obj 파일을 만들 때 식별자를 데코레이트합니다. 소스 코드에 표시되는 대로 디코데이션되지 않은 형식으로 링커에 항목 이름을 지정하면 LINK가 이름과 일치하려고 시도합니다. 고유한 일치 항목을 찾을 수 없으면 LINK에서 오류 메시지를 표시합니다. 링커에 지정해야 하는 경우 DUMPBIN 도구를 사용하여 식별자의 데코레이팅된 이름 형식을 가져옵니다.

참고 항목

선언된 C 식별자의 데코레이팅된 __cdecl 형식을 지정하지 마세요.__stdcall

디코딩되지 않은 함수 이름을 내보내고 빌드 구성(예: 32비트 또는 64비트 빌드)에 따라 내보내기가 다른 경우 각 구성에 대해 서로 다른 DEF 파일을 사용할 수 있습니다. (DEF 파일에서는 전처리기 조건부 지시문을 사용할 수 없습니다.) 또는 여기에 표시된 대로 함수 선언 앞에 지시문을 사용할 #pragma comment 수 있습니다. 여기서 PlainFuncName 는 장식되지 않은 이름이며 _PlainFuncName@4 함수의 데코레이팅된 이름입니다.

#pragma comment(linker, "/export:PlainFuncName=_PlainFuncName@4")
BOOL CALLBACK PlainFuncName( Things * lpParams)

Visual Studio 개발 환경에서 이 링커 옵션을 설정하려면

  1. 프로젝트의 속성 페이지 대화 상자를 엽니다. 자세한 내용은 Visual Studio에서 C++ 컴파일러 및 빌드 속성 설정을 참조하세요.

  2. 구성 속성>링커>명령줄 속성 페이지를 선택합니다.

  3. 추가 옵션 상자에 옵션을 입력합니다.

프로그래밍 방식으로 이 링커 옵션을 설정하려면

참고 항목

MSVC 링커 참조
MSVC 링커 옵션