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

형식 라이브러리 내보내기를 사용하면 공용 언어 런타임 어셈블리에 정의된 형식을 설명하는 형식 라이브러리를 생성할 수 있습니다.The Type Library Exporter generates a type library that describes the types defined in a common language runtime assembly.

이 도구는 자동으로 Visual Studio와 함께 설치됩니다.This tool is automatically installed with Visual Studio. 이 도구를 실행하려면 Visual Studio용 개발자 명령 프롬프트(또는 Windows 7의 Visual Studio 명령 프롬프트)를 사용합니다.To run the tool, use the Developer Command Prompt for Visual Studio (or the Visual Studio Command Prompt in Windows 7). 자세한 내용은 명령 프롬프트를 참조하세요.For more information, see Command Prompts.

명령 프롬프트에 다음을 입력합니다.At the command prompt, type the following:

구문Syntax

tlbexp assemblyName [options]  

매개 변수Parameters

인수Argument 설명Description
assemblyNameassemblyName 형식 라이브러리를 내보내려는 대상 어셈블리를 나타냅니다.The assembly for which to export a type library.
옵션Option 설명Description
/asmpath: directory/asmpath: directory 어셈블리를 검색할 위치를 지정합니다.Specifies the location to search for assemblies. 이 옵션을 사용하는 경우 현재 디렉터리를 포함하여 참조되는 어셈블리를 검색할 위치를 명시적으로 지정해야 합니다.If you use this option, you must explicitly specify the locations to search for referenced assemblies, including the current directory.

asmpath 옵션을 사용하는 경우 형식 라이브러리 내보내기가 GAC(전역 어셈블리 캐시)에서 어셈블리를 찾지 않습니다.When you use the asmpath option, the Type Library Exporter will not look for an assembly in the global assembly cache (GAC).
/help/help 이 도구의 명령 구문 및 옵션을 표시합니다.Displays command syntax and options for the tool.
/names: filename/names: filename 형식 라이브러리에 있는 이름을 대문자로 지정합니다.Specifies the capitalization of names in a type library. filename 인수는 텍스트 파일입니다.The filename argument is a text file. 파일의 각 줄에서 형식 라이브러리에 있는 이름을 하나씩 대문자로 지정합니다.Each line in the file specifies the capitalization of one name in the type library.
/nologo/nologo Microsoft 시작 배너를 표시하지 않습니다.Suppresses the Microsoft startup banner display.
/oldnames/oldnames 형식 이름이 충돌할 경우 Tlbexp.exe에서 데코레이팅된 형식 이름을 내보내도록 합니다.Forces Tlbexp.exe to export decorated type names if there is a type name conflict. .NET Framework 2.0 이전 버전에서는 이 옵션이 기본 동작이었습니다.Note that this was the default behavior in versions prior to the .NET Framework version 2.0.
/out: file/out: file 생성할 형식 라이브러리 파일의 이름을 지정합니다.Specifies the name of the type library file to generate. 이 옵션을 지정하지 않으면 해당 어셈블리와 동일한 이름(실제 어셈블리 이름으로서 해당 어셈블리가 들어 있는 파일 이름과 동일하지 않을 수도 있음) 및 .tlb 확장명을 가지는 형식 라이브러리가 생성됩니다.If you omit this option, Tlbexp.exe generates a type library with the same name as the assembly (the actual assembly name, which might not necessarily be the same as the file containing the assembly) and a .tlb extension.
/silence: warningnumber/silence: warningnumber 지정한 경고를 표시하지 않습니다.Suppresses the display of the specified warning. 이 옵션은 /silent와 함께 사용할 수 없습니다.This option cannot be used with /silent.
/silent/silent 성공 메시지를 표시하지 않습니다.Suppresses the display of success messages. 이 옵션은 /silence와 함께 사용할 수 없습니다.This option cannot be used with /silence.
/tlbreference: typelibraryname/tlbreference: typelibraryname Tlbexp.exe에서 레지스트리를 조회하지 않고 형식 라이브러리 참조를 명시적으로 확인하도록 합니다.Forces Tlbexp.exe to explicitly resolve type library references without consulting the registry. 예를 들어, 어셈블리 B가 어셈블리 A를 참조하는 경우, 레지스트리에 지정된 형식 라이브러리에 의존하지 않고 이 옵션을 사용하여 명시적 형식 라이브러리 참조를 제공할 수 있습니다.For example, if assembly B references assembly A, you can use this option to provide an explicit type library reference, rather than relying on the type library specified in the registry. Tlbexp.exe에서는 버전을 검사하여 형식 라이브러리 버전이 어셈블리 버전과 일치하는지 확인합니다. 일치하지 않으면 오류가 발생합니다.Tlbexp.exe performs a version check to ensure that the type library version matches the assembly version; otherwise, it generates an error.

tlbreference 옵션은 다른 형식으로 구현되는 인터페이스에 ComImportAttribute 특성이 적용되는 경우에도 레지스트리를 참조합니다.Note that the tlbreference option still consults the registry in cases where the ComImportAttribute attribute is applied to an interface that is then implemented by another type.
/tlbrefpath: path/tlbrefpath: path 참조되는 형식 라이브러리에 대한 정규화된 경로입니다.Fully qualified path to a referenced type library.
/win32/win32 이 옵션은 64비트 컴퓨터에서 컴파일할 때 Tlbexp.exe가 32비트 형식 라이브러리를 생성하도록 지정합니다.When compiling on a 64-bit computer, this option specifies that Tlbexp.exe generates a 32-bit type library.
/win64/win64 이 옵션은 32비트 컴퓨터에서 컴파일할 때 Tlbexp.exe가 64비트 형식 라이브러리를 생성하도록 지정합니다.When compiling on a 32-bit computer, this option specifies that Tlbexp.exe generates a 64-bit type library.
/verbose/verbose 세부 정보 표시 모드를 지정합니다. 즉, 형식 라이브러리가 생성되어야 하는 참조되는 어셈블리의 목록을 표시합니다.Specifies verbose mode; displays a list of any referenced assemblies for which a type library needs to be generated.
/?/? 이 도구의 명령 구문 및 옵션을 표시합니다.Displays command syntax and options for the tool.

참고

Tlbexp.exe의 명령줄 옵션은 대/소문자를 구분하지 않으며 순서에 관계없이 지정할 수 있습니다.The command-line options for Tlbexp.exe are case-insensitive and can be supplied in any order. 또한, 고유하게 식별할 수 있을 정도로만 옵션을 지정하면 됩니다.You only need to specify enough of the option to uniquely identify it. 예를 들어, /n/nologo와 같고, /o: outfile.tlb/out: outfile.tlb와 같습니다.For example, /n is equivalent to /nologo, and /o: outfile.tlb is equivalent to /out: outfile.tlb.

설명Remarks

Tlbexp.exe를 사용하여 어셈블리에 정의된 형식에 대한 정의가 들어 있는 형식 라이브러리를 생성할 수 있으며,Tlbexp.exe generates a type library that contains definitions of the types defined in the assembly. Visual Basic 6.0과 같은 애플리케이션에서는 이렇게 생성된 형식 라이브러리를 사용하여 어셈블리에 정의된 .NET 형식에 바인딩할 수 있습니다.Applications such as Visual Basic 6.0 can use the generated type library to bind to the .NET types defined in the assembly.

중요

Tlbexp.exe를 사용하여 Windows 메타데이터(.winmd) 파일을 내보낼 수 없습니다.You cannot use Tlbexp.exe to export Windows metadata (.winmd) files. Windows 런타임 어셈블리 내보내기는 지원되지 않습니다.Exporting Windows Runtime assemblies is not supported.

어셈블리는 전체가 한 번에 변환됩니다.The entire assembly is converted at once. Tlbexp.exe를 사용하여 어셈블리에 정의된 형식의 하위 집합에 대한 형식 정보를 생성할 수는 없습니다.You cannot use Tlbexp.exe to generate type information for a subset of the types defined in an assembly.

또한 형식 라이브러리 가져오기(Tlbimp.exe)를 사용하여 가져온 어셈블리에서 형식 라이브러리를 생성할 수도 없습니다.You cannot use Tlbexp.exe to produce a type library from an assembly that was imported using the Type Library Importer (Tlbimp.exe). 대신 Tlbimp.exe를 사용하여 가져온 원본 형식 라이브러리를 참조해야 합니다.Instead, you should refer to the original type library that was imported with Tlbimp.exe. Tlbimp.exe를 사용하여 가져온 어셈블리를 참조하는 어셈블리에서 형식 라이브러리를 내보낼 수 있습니다.You can export a type library from an assembly that references assemblies that were imported using Tlbimp.exe. 아래의 예제 단원을 참조하십시오.See the examples section below.

Tlbexp.exe를 사용하면 생성된 형식 라이브러리는 현재 작업 디렉터리 또는 출력 파일에 대해 지정된 디렉터리에 놓이며,Tlbexp.exe places generated type libraries in the current working directory or the directory specified for the output file. 하나의 어셈블리에서 여러 개의 형식 라이브러리가 생성될 수도 있습니다.A single assembly might cause several type libraries to be generated.

Tlbexp.exe를 사용하면 형식 라이브러리는 생성되지만 등록되지는 않습니다.Tlbexp.exe generates a type library but does not register it. 즉, 형식 라이브러리의 생성 및 등록을 모두 수행하는 어셈블리 등록 도구(Regasm.exe)와는 정반대입니다.This is in contrast to the Assembly Registration tool (Regasm.exe), which both generates and registers a type library. 따라서 COM을 사용하여 형식 라이브러리를 생성 및 등록하려면 Regasm.exe를 사용하십시오.To generate and register a type library with COM, use Regasm.exe.

/win32 또는 /win64 옵션을 지정하지 않으면 Tlbexp.exe는 컴파일을 수행할 컴퓨터(32비트 또는 64비트 컴퓨터)의 형식에 해당하는 32비트 또는 64비트 형식 라이브러리를 생성합니다.If you do not specify either the /win32 or /win64 option, Tlbexp.exe generates a 32-bit or 64-bit type library that corresponds to the type of computer on which you are performing the compilation (32-bit or 64-bit computer). 크로스 컴파일의 경우 32비트 컴퓨터에서 /win64 옵션을 사용하여 64비트 형식 라이브러리를 생성하거나 64비트 컴퓨터에서 /win32 옵션을 사용하여 32비트 형식 라이브러리를 생성할 수 있습니다.For cross-compilation purposes, you can use the /win64 option on a 32-bit computer to generate a 64-bit type library and you can use the /win32 option on a 64-bit computer to generate a 32-bit type library. 32비트 형식 라이브러리에서 SYSKIND 값은 SYS_WIN32로 설정되고In 32-bit type libraries, the SYSKIND value is set to SYS_WIN32. 64비트 형식 라이브러리에서 SYSKIND 값은 SYS_WIN64로 설정됩니다.In 64-bit type libraries, the SYSKIND value is set to SYS_WIN64. 모든 데이터 형식 변환(예: IntPtrUIntPtr 같은 포인터 크기의 데이터 형식)이 적절하게 변환됩니다.All data type transformations (for example, pointer-sized data types such as IntPtr and UIntPtr) are converted appropriately.

MarshalAsAttribute 특성을 사용하여 SafeArraySubType 또는 VT_UNKOWNVT_DISPATCH 값을 지정하면 Tlbexp.exe에서는 이후에 사용하는 SafeArrayUserDefinedSubType 필드를 모두 무시합니다.If you use the MarshalAsAttribute attribute to specify a SafeArraySubType value of VT_UNKOWN or VT_DISPATCH, Tlbexp.exe ignores any subsequent use of the SafeArrayUserDefinedSubType field. 예를 들어, 다음과 같은 서명을 지정할 경우For example, given the following signatures:

[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;}  

다음 형식 라이브러리가 생성됩니다.the following type library is generated:

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

Tlbexp.exe에서는 SafeArrayUserDefinedSubType 필드를 무시합니다.Note that Tlbexp.exe ignores the SafeArrayUserDefinedSubType field.

형식 라이브러리가 어셈블리의 모든 정보를 포함할 수 없으므로 변환 프로세스를 통해 내보내는 동안 일부 데이터가 삭제될 수도 있습니다.Because type libraries cannot accommodate all the information found in assemblies, Tlbexp.exe might discard some data during the export process. 변형 프로세스 설명 및 형식 라이브러리에 내보낸 정보에 대한 소스 식별에 대한 자세한 내용은 어셈블리와 형식 라이브러리 간 변환 요약을 참조하세요.For an explanation of the transformation process and identification of the source of each piece of information emitted to a type library, see the Assembly to Type Library Conversion Summary.

형식 라이브러리 내보내기는 TypedReference 개체가 비관리 코드에서 의미가 없더라도 VARIANT 매개 변수가 TypedReference인 메서드를 내보냅니다.Note that the Type Library Exporter exports methods that have TypedReference parameters as VARIANT, even though the TypedReference object has no meaning in unmanaged code. TypedReference 매개 변수가 있는 메서드를 내보내면 형식 라이브러리 내보내기가 경고나 오류를 생성하지 않으며 결과 형식 라이브러리를 사용하는 비관리 코드가 제대로 실행되지 않습니다.When you export methods that have TypedReference parameters, the Type Library Exporter will not generate a warning or error and unmanaged code that uses the resulting type library will not run properly.

형식 라이브러리 내보내기는 Microsoft Windows 2000 이상에서 지원됩니다.The Type Library Exporter is supported on Microsoft Windows 2000 and later.

Examples

다음 명령을 사용하여 myTest.dll에 있는 어셈블리와 동일한 이름의 형식 라이브러리를 생성합니다.The following command generates a type library with the same name as the assembly found in myTest.dll.

tlbexp myTest.dll  

다음 명령을 사용하여 clipper.tlb라는 이름의 형식 라이브러리를 생성합니다.The following command generates a type library with the name clipper.tlb.

tlbexp myTest.dll /out:clipper.tlb  

다음 예제에서는 Tlbimp.exe를 사용하여 가져온 어셈블리를 참조하는 어셈블리에서 Tlbexp.exe를 사용하여 형식 라이브러리를 내보내는 방법을 보여 줍니다.The following example illustrates using Tlbexp.exe to export a type library from an assembly that references assemblies that were imported using Tlbimp.exe.

먼저, Tlbimp.exe를 사용하여 형식 라이브러리 myLib.tlb를 가져온 다음 이를 myLib.dll로 저장합니다.First use Tlbimp.exe to import the type library myLib.tlb and save it as myLib.dll.

tlbimp myLib.tlb /out:myLib.dll  

다음 명령을 사용하여 앞의 예제에서 생성된 Sample.dll,을 참조하는 myLib.dll을 C# 컴파일러로 컴파일합니다.The following command uses the C# compiler to compile the Sample.dll, which references myLib.dll created in the previous example.

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

다음 명령을 사용하여 Sample.dll을 참조하는 myLib.dll에 대한 형식 라이브러리를 생성합니다.The following command generates a type library for Sample.dll that references myLib.dll.

tlbexp Sample.dll  

참고 항목See also