다음을 통해 공유


사용할 내보내기 방법 결정

두 가지 방법 중 하나로 함수를 내보낼 수 있습니다 —.def 파일 또는 __declspec(dllexport) 키워드입니다.DLL에 대 한 더 나은 방법을 결정 하는 데 도움이 되도록 이러한 질문을 고려 합니다.

  • 나중에 더 많은 함수를 내보내는 계획 입니까?

  • 다시 만들 수 있습니다 하거나 다시 빌드할 수 없는 응용 프로그램에서 사용 되는 응용 프로그램 에서만 사용 되는 DLL-타사에서 만든 응용 프로그램 예를 들어?

.Def 파일 사용의 장단점

내보내기 함수를 통해 내보내기 서 수를 제어할는.def 파일 수 있습니다.내보낸된 함수가 DLL에 추가 하는 경우 내보낸된 다른 어떤 기능 보다 더 높은 서 수 값을 할당할 수 있습니다.이렇게 하면 암시적 링크를 사용 하는 응용 프로그램은 새 함수를 포함 하는 가져오기 라이브러리에 다시 링크할 필요가 없습니다.이 새로운 기능을 추가 하 고 또한 이미 여기에 의존 하는 응용 프로그램이 제대로 작동 하려면 계속 확인할 수 있으므로 여러 응용 프로그램에서 사용할 DLL을 디자인 하는 경우에 매우 편리 합니다.예를 들어, MFC Dll은.def 파일을 사용 하 여 빌드됩니다.

사용할 수 있는 또 다른 장점은.def 파일을 사용 하 되는 NONAME 함수를 내보낼 수 있는 특성입니다.이 dll에서의 내보내기 테이블에 서 수만 배치 됩니다.사용 하 여 내보내기 함수가 많은 dll은 NONAME 특성은 DLL 파일의 크기를 줄일 수 있습니다.모듈 정의 문의 작성 하는 방법에 대 한 내용은 모듈 정의 문의 규칙.서 수 내보내기에 대 한 내용은 이름 대신 서수를 사용하여 DLL에서 함수 내보내기.

.Def 파일을 사용 하는 c + + 파일에서에서 함수를 내보내는 경우 데코레이팅된 이름을.def에 넣을 수 있는 파일 내보낸된 함수를 extern "C"를 사용 하 여 수행 되는 이름 데코레이션을 방지 하기 위해 정의 단점이 Visual C++ 컴파일러에서.

데코레이팅된 이름을.def 파일에 붙여 넣을 경우이 사용 하 여 가져올 수 있는 DUMPBIN 도구 또는 사용 하 여 링커가 /MAP 옵션.컴파일러에 의해 생성 되는 데코레이팅된 이름을 컴파일러에 따라 다릅니다. .def 파일에는 컴파일러에서 생성 된 데코 레이트 된 이름을 넣으면 따라서 DLL에 링크 하는 응용 프로그램 또한 호출 응용 프로그램의 데코레이팅된 이름과 DLL의.def 파일에 있는 내보내는 이름이 일치 하는 동일한 버전의 컴파일러를 사용 하 여 빌드해야 합니다.

__declspec(dllexport) 사용의 장단점

사용 하 여 __declspec(dllexport) .def 파일을 유지 관리 하 고 내보내기 함수의 데코레이팅된 이름을 얻는 방법에 대 한 걱정 하지 않아도 되므로 편리 합니다.그러나이 이렇게 내보내기의 유용성을 다시 작성 하는 연결 된 응용 프로그램의 수로 제한 됩니다.새 내보내기로 DLL을 다시 빌드하는 경우 다시 만드는 것은 다른 버전의 컴파일러를 사용 하는 경우 내보낸 c + + 함수의 데코레이팅된 이름이 변경 될 수 있으므로 응용 프로그램을 다시 빌드해야 할 수도 있습니다.

900axts6.collapse_all(ko-kr,VS.110).gif수행할 작업

900axts6.collapse_all(ko-kr,VS.110).gif추가 정보

참고 항목

개념

DLL에서 내보내기