DetailPage-MSS-KB

기술 자료

기술 자료: 126845 - 마지막 검토: 2005년 9월 1일 목요일 - 수정: 4.0

 

이 페이지에서

요약

Microsoft C++ 컴파일러는 C++ 이름에는 형식 정보를 프로그램 기호의 이름을 인코딩합니다. 이 "이름 데코레이션은" 또는 "이름 맹글링" 이라고 이 형식 안전 연결할 수 있도록 목적입니다. C++ 언어의 함수 오버로딩 위치에 같은 이름 가진 함수를 경우에만 서로 인수의 데이터 형식을 함수에 구별되는 있습니다. 이름 데코레이션은 링커를 인코딩 또는 다르게 데코레이팅된 함수 이름에 때문에 서로 다른 버전의 오버로드된 함수 구별할 수 있습니다.

추가 정보

다른 컴파일러 공급업체 자신의 방법 또는 알고리즘에 대한 이름을 장식 있습니다. Microsoft는 앞으로 변경될 수 있으므로 해당 컴파일러 이름 데코레이션은 사용할 알고리즘을 게시하지 않습니다. 그러나 함수 이름의 데코레이팅된 버전을 얻기 위해 필요한 경우가 있습니다. 예를 들어, C++ 함수 DLL을 빌드하는 데 사용되는 .DEF 파일에 있는 EXPORTS 섹션에 나열된 Windows DLL에서 내보내기 할 수도 있습니다. (__declspec (dllexport) 함수로 Visual C++ 32비트 버전을 사용하여 C++ 함수를 내보낼 수 있는 기본 방법입니다 선언 있지만 더 여전히 이러한 제품과 함께 .DEF 파일을 사용할 수 없습니다.) 함수가 성공적으로 내보내야 소스 코드에 있는 이름이 해당 데코레이팅된 이름 나열 합니다.

모든 위에 나열된 제품의 Microsoft 브라우저 도구 키트 사용할 수 있습니다. 이러한 도구 키트 데코레이팅된 이름을 해석할 수 있는 기능을 제공합니다.

__declspec(dllexport)에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
132044  (http://support.microsoft.com/kb/132044/ ) _declspec(dllimport) 및 _declspec(dllexport) 코드에서 사용
다음 샘플 코드에서는 FormatDName 함수를 브라우저 Toolkit 일부가 브라우저 라이브러리를 사용합니다. 브라우저 도구 키트를 다운로드하려면 다음 Microsoft 웹 사이트를 방문하십시오.
http://www.microsoft.com/downloads/details.aspx?FamilyID=621ae185-1c2a-4d6b-8146-183d66fe709d&displaylang=en (http://www.microsoft.com/downloads/details.aspx?FamilyID=621ae185-1c2a-4d6b-8146-183d66fe709d&displaylang=en)
이 함수는 전달된 이름 데코레이팅되지 않은 형식으로 반환합니다.

예제 코드

   /* Compile options needed: cl /AL getname.cpp bthunkl.obj /link bsc.lib
          (for 16-bit, where getname.cpp is the source file name)
                              cl getname.cpp /link bsc.lib
          (for 32-bit version 4.x and earlier, where getname.cpp is the source
           file name)
   */ 

   #include <iostream.h>
   #include <strstrea.h>

   extern "C"
   {
   #include "hungary.h"
   #include "bsc.h"
   #include "bscsup.h"
   }

   void main( int argc, char *argv[] )
   {
       if ( argc < 2 )
       {
           cout << "Usage: GETNAME decorated-name" << endl;
           return;
       }

       strstream name;

       // Call browser library function to get undecorated name
       name << FormatDname ( argv[1] ) << '\0';

       cout << "Undecorated name: " << name.str() << endl;
       name.rdbuf()->freeze( 0 );
   }
				
다음은 새 브라우저 도구 키트 5.0 및 Visual C++ 버전으로 5.0 작동합니다.
   /* Compile options needed: cl /GX getname.cpp /link msbsc50.lib
          (where getname.cpp is the source file name)
   */ 

   #include <iostream>
   #include <strstream>
   #include <windows.h>
   #include "bsc.h"

   using namespace std;

   int main( int argc, char *argv[] )
   {
       Bsc* pbsc;

       if ( argc < 3 )
       {
           cout << "Usage: GETNAME bscfile-name decorated-name" << endl;
           return 1;
       }

       strstream name;

       // Open the browser file
       Bsc::open( argv[1], &pbsc );

       // Call browser library function to get undecorated name
       name << pbsc->formatDname( argv[2] ) << '\0';

       cout << "Undecorated name: " << name.str() << endl;
       name.rdbuf()->freeze( 0 );

       pbsc->close();
       return 0;
   }
				

본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Visual C++ 1.5 Professional Edition
  • Microsoft Visual C++ 1.51
  • Microsoft Visual C++ 1.52 Professional Edition
  • Microsoft Visual C++ 2.0 Professional Edition
  • Microsoft Visual C++ 2.1
  • Microsoft Visual C++ 4.0 Standard Edition
  • Microsoft Visual C++ 4.1 Subscription
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 6.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ 6.0 Professional Edition
  • Microsoft Visual C++, 32-bit Learning Edition 6.0
키워드: 
kbmt kbcode kbcompiler kbcpponly kbinfo KB126845 KbMtko
기계 번역된 문서기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.
공유
추가 지원 옵션
Microsoft Community 지원 포럼
직접 문의하기
Microsoft Certified Partner 찾기
Microsoft Store
소기업이 아닙니까?
다음에서 팔로우하십시오.