다음을 통해 공유


Tlbexp.exe(형식 라이브러리 내보내기)

업데이트: 2011년 4월

형식 라이브러리 내보내기를 사용하면 공용 언어 런타임 어셈블리에 정의된 형식을 설명하는 형식 라이브러리를 생성할 수 있습니다.

이 도구는 Visual Studio 및 Windows SDK와 함께 자동으로 설치됩니다. 도구를 실행하려면 Visual Studio 명령 프롬프트 또는 Windows SDK 명령 프롬프트(CMD 셸)를 사용하는 것이 좋습니다. 이러한 유틸리티를 사용하면 설치 폴더를 탐색하지 않고도 도구를 쉽게 실행할 수 있습니다. 자세한 내용은 Visual Studio 및 Windows SDK 명령 프롬프트을 참조하십시오.

  • 컴퓨터에 Visual Studio를 설치한 경우 작업 표시줄에서 Start, All Programs, Visual Studio, Visual Studio Tools 및 Visual Studio Command Prompt를 차례로 클릭합니다.

    또는

    컴퓨터에 Windows SDK를 설치한 경우 작업 표시줄에서 Start, All Programs 및 Windows SDK의 폴더를 차례로 클릭한 다음 Command Prompt(또는 CMD Shell)를 클릭합니다.

  • 명령 프롬프트에 다음과 같이 입력합니다.

tlbexp assemblyName [/out:file] [/nologo] [/silent] [/verbose]

매개 변수

인수

설명

assemblyName

형식 라이브러리를 내보내려는 대상 어셈블리를 나타냅니다.

Option

설명

/asmpath:디렉터리

어셈블리를 검색할 위치를 지정합니다. 이 옵션을 사용하는 경우 현재 디렉터리를 포함하여 참조되는 어셈블리를 검색할 위치를 명시적으로 지정해야 합니다.

asmpath 옵션을 사용하는 경우 형식 라이브러리 내보내기가 GAC(전역 어셈블리 캐시)에서 어셈블리를 찾지 않습니다.

/help

이 도구의 명령 구문 및 옵션을 표시합니다.

/names:filename

형식 라이브러리에 있는 이름을 대문자로 지정합니다. filename 인수는 텍스트 파일입니다. 파일의 각 줄에서 형식 라이브러리에 있는 이름을 하나씩 대문자로 지정합니다.

/nologo

Microsoft 시작 배너를 표시하지 않습니다.

/oldnames

형식 이름이 충돌할 경우 Tlbexp.exe에서 데코레이팅된 형식 이름을 내보내도록 합니다. .NET Framework 2.0 이전 버전에서는 이 옵션이 기본 동작이었습니다.

/out:파일

생성할 형식 라이브러리 파일의 이름을 지정합니다. 이 옵션을 지정하지 않으면 해당 어셈블리와 동일한 이름(실제 어셈블리 이름으로서 해당 어셈블리가 들어 있는 파일 이름과 동일하지 않을 수도 있음) 및 .tlb 확장명을 가지는 형식 라이브러리가 생성됩니다.

/silent

성공 메시지를 표시하지 않습니다.

/tlbreference:형식 라이브러리 이름

Tlbexp.exe에서 레지스트리를 조회하지 않고 형식 라이브러리 참조를 명시적으로 확인하도록 합니다. 예를 들어, 어셈블리 B가 어셈블리 A를 참조하는 경우, 레지스트리에 지정된 형식 라이브러리에 의존하지 않고 이 옵션을 사용하여 명시적 형식 라이브러리 참조를 제공할 수 있습니다. Tlbexp.exe에서는 버전을 검사하여 형식 라이브러리 버전이 어셈블리 버전과 일치하는지 확인합니다. 일치하지 않으면 오류가 발생합니다.

tlbreference 옵션은 다른 형식으로 구현되는 인터페이스에 ComImportAttribute 특성이 적용되는 경우에도 레지스트리를 참조합니다.

/tlbrefpath:경로

참조되는 형식 라이브러리에 대한 정규화된 경로입니다.

/win32

이 옵션은 64비트 컴퓨터에서 컴파일할 때 Tlbexp.exe가 32비트 형식 라이브러리를 생성하도록 지정합니다.

/win64

이 옵션은 32비트 컴퓨터에서 컴파일할 때 Tlbexp.exe가 64비트 형식 라이브러리를 생성하도록 지정합니다.

/verbose

세부 정보 표시 모드를 지정합니다. 즉, 형식 라이브러리가 생성되어야 하는 참조되는 어셈블리의 목록을 표시합니다.

/?

이 도구의 명령 구문 및 옵션을 표시합니다.

참고참고

Tlbexp.exe의 명령줄 옵션은 대/소문자를 구분하지 않으며 순서에 관계없이 지정할 수 있습니다.또한, 고유하게 식별할 수 있을 정도로만 옵션을 지정하면 됩니다.예를 들어, /n/nologo와 같고, /o:outfile.tlb는 /out:outfile.tlb와 같습니다.

설명

Tlbexp.exe를 사용하여 어셈블리에 정의된 형식에 대한 정의가 들어 있는 형식 라이브러리를 생성할 수 있으며, Visual Basic 6.0과 같은 응용 프로그램에서는 이렇게 생성된 형식 라이브러리를 사용하여 어셈블리에 정의된 .NET 형식에 바인딩할 수 있습니다.

어셈블리는 전체가 한 번에 변환됩니다. Tlbexp.exe를 사용하여 어셈블리에 정의된 형식의 하위 집합에 대한 형식 정보를 생성할 수는 없습니다.

또한, 형식 라이브러리 가져오기(Tlbimp.exe)를 사용하여 가져온 어셈블리에서 형식 라이브러리를 생성할 수도 없습니다. 대신 Tlbimp.exe를 사용하여 가져온 원본 형식 라이브러리를 참조해야 합니다. Tlbimp.exe를 사용하여 가져온 어셈블리를 참조하는 어셈블리에서 형식 라이브러리를 내보낼 수 있습니다. 아래의 예제 단원을 참조하십시오.

Tlbexp.exe를 사용하면 생성된 형식 라이브러리는 현재 작업 디렉터리 또는 출력 파일에 대해 지정된 디렉터리에 놓이며, 하나의 어셈블리에서 여러 개의 형식 라이브러리가 생성될 수도 있습니다.

Tlbexp.exe를 사용하면 형식 라이브러리는 생성되지만 등록되지는 않습니다. 즉, 형식 라이브러리의 생성 및 등록을 모두 수행하는 어셈블리 등록 도구(Regasm.exe)와는 정반대입니다. 따라서 COM을 사용하여 형식 라이브러리를 생성 및 등록하려면 Regasm.exe를 사용하십시오.

/win32 또는 /win64 옵션을 지정하지 않으면 Tlbexp.exe는 컴파일을 수행할 컴퓨터(32비트 또는 64비트 컴퓨터)의 형식에 해당하는 32비트 또는 64비트 형식 라이브러리를 생성합니다. 크로스 컴파일의 경우 32비트 컴퓨터에서 /win64 옵션을 사용하여 64비트 형식 라이브러리를 생성하거나 64비트 컴퓨터에서 /win32 옵션을 사용하여 32비트 형식 라이브러리를 생성할 수 있습니다. 32비트 형식 라이브러리에서 SYSKIND 값은 SYS_WIN32로 설정되고 64비트 형식 라이브러리에서 SYSKIND 값은 SYS_WIN64로 설정됩니다. 모든 데이터 형식 변환(예: IntPtr 및 UIntPtr 같은 포인터 크기의 데이터 형식)이 적절하게 변환됩니다.

MarshalAsAttribute 특성을 사용하여 VT_UNKOWN 또는 VT_DISPATCH의 SafeArraySubType 값을 지정하면 Tlbexp.exe에서는 이후에 사용하는 SafeArrayUserDefinedSubType 필드를 모두 무시합니다. 예를 들어, 다음과 같은 서명을 지정할 경우

[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_UNKNOWN, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructUnkSafe(){return null;}
[return:MarshalAs(UnmanagedType.SafeArray, SafeArraySubType=VarEnum.VT_DISPATCH, SafeArrayUserDefinedSubType=typeof(ConsoleKeyInfo))] public Array StructDispSafe(){return null;}

다음 형식 라이브러리가 생성됩니다.

[id(0x60020004)]
HRESULT StructUnkSafe([out, retval] SAFEARRAY(IUnknown*)* pRetVal);
[id(0x60020005)]
HRESULT StructDispSafe([out, retval] SAFEARRAY(IDispatch*)* pRetVal);

Tlbexp.exe에서는 SafeArrayUserDefinedSubType 필드를 무시합니다.

형식 라이브러리가 어셈블리의 모든 정보를 포함할 수 없으므로 변환 프로세스를 통해 내보내는 동안 일부 데이터가 삭제될 수도 있습니다. 변환 프로세스 설명 및 형식 라이브러리에 내보낸 정보에 대한 소스 식별에 대한 자세한 내용은 어셈블리를 형식 라이브러리로 변환 요약을 참조하십시오.

형식 라이브러리 내보내기는 TypedReference 개체가 비관리 코드에서 의미가 없더라도 TypedReference 매개 변수가 VARIANT인 메서드를 내보냅니다. TypedReference 매개 변수가 있는 메서드를 내보내면 형식 라이브러리 내보내기가 경고나 오류를 생성하지 않으며 결과 형식 라이브러리를 사용하는 비관리 코드가 제대로 실행되지 않습니다.

형식 라이브러리 내보내기는 Microsoft Windows 2000 이상에서 지원됩니다.

예제

다음 명령을 사용하여 myTest.dll에 있는 어셈블리와 동일한 이름의 형식 라이브러리를 생성합니다.

tlbexp myTest.dll

다음 명령을 사용하여 clipper.tlb라는 이름의 형식 라이브러리를 생성합니다.

tlbexp myTest.dll /out:clipper.tlb

다음 예제에서는 Tlbimp.exe를 사용하여 가져온 어셈블리를 참조하는 어셈블리에서 Tlbexp.exe를 사용하여 형식 라이브러리를 내보내는 방법을 보여 줍니다.

먼저, Tlbimp.exe를 사용하여 형식 라이브러리 myLib.tlb를 가져온 다음 이를 myLib.dll로 저장합니다.

tlbimp myLib.tlb /out:myLib.dll

다음 명령을 사용하여 앞의 예제에서 생성된 myLib.dll을 참조하는 Sample.dll,을 C# 컴파일러로 컴파일합니다.

CSC Sample.cs /reference:myLib.dll /out:Sample.dll

다음 명령을 사용하여 myLib.dll을 참조하는 Sample.dll에 대한 형식 라이브러리를 생성합니다.

tlbexp Sample.dll

참고 항목

참조

TypeLibExporterFlags

Regasm.exe(어셈블리 등록 도구)

Tlbimp.exe(형식 라이브러리 가져오기)

Visual Studio 및 Windows SDK 명령 프롬프트

기타 리소스

.NET Framework 도구

어셈블리를 형식 라이브러리로 변환 요약

변경 기록

날짜

변경 내용

이유

2011년 4월

Visual Studio 및 Windows SDK 명령 프롬프트 사용에 대한 정보를 추가했습니다.

향상된 기능 관련 정보