dllexport
, dllimport
Microsoft 전용
dllexport
및 dllimport
저장소 클래스 특성은 C 및 C++ 언어에 대한 Microsoft 고유의 확장입니다. 이러한 특성을 사용하여 함수, 데이터 및 개체를 DLL에 내보내거나 DLL에서 가져올 수 있습니다.
구문
__declspec( dllimport )
declarator
__declspec( dllexport )
declarator
설명
이러한 특성은 실행 파일이나 다른 DLL일 수 있는 클라이언트에 대한 DLL 인터페이스를 명시적으로 정의합니다. 함수를 dllexport
(으)로 선언하면 적어도 내보낸 함수의 지정과 관련하여 모듈 정의(.def
) 파일이 필요하지 않게 됩니다. dllexport
특성은 __export
키워드를 대체합니다.
클래스가 __declspec(dllexport)
(으)로 표시된 경우 클래스 계층 구조에 있는 클래스 템플릿의 특수화는 암시적으로 __declspec(dllexport)
(으)로 표시됩니다. 이는 클래스 템플릿이 명시적으로 인스턴스화되었으며 클래스의 멤버가 정의되어야 함을 의미합니다.
함수의 dllexport
은(는) "name mangling"이라고도 하는 데코레이팅된 이름으로 함수를 노출합니다. C++ 함수의 경우 데코레이팅된 이름에는 형식 및 매개 변수 정보를 인코딩하는 추가 문자가 포함됩니다. C 함수 또는 extern "C"
(으)로 선언된 함수는 C 이름 데코레이션 규칙을 따릅니다. C/C++ 코드의 이름 데코레이션에 대한 자세한 내용은 데코레이트된 이름을 참조하세요.
데코레이트되지 않은 이름을 내보내려면 EXPORTS
섹션에서 데코레이트되지 않은 이름을 정의하는 모듈 정의(.def
) 파일을 사용하여 연결할 수 있습니다. 자세한 내용은 EXPORTS
를 참조하세요. 데코레이트되지 않은 이름을 내보내는 또 다른 방법은 소스 코드에 #pragma comment(linker, "/export:alias=decorated_name")
지시문을 사용하는 것입니다.
dllexport
또는 dllimport
을(를) 선언하는 경우 확장 특성 구문과 __declspec
키워드를 사용해야 합니다.
예시
// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();
또는 매크로 정의를 사용하여 코드를 보다 읽기 쉽게 만들 수 있습니다.
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;
자세한 내용은 다음을 참조하세요.
Microsoft 전용 종료
참고 항목
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기