문제

C#에서 사용하려는 IDL 파일에 인터페이스가 정의되어 있습니다. IDL을 C#에서 사용할 수있는 것으로 변환하는 방법이 있습니까?

도움이 되었습니까?

해결책

한 가지 방법은 실행하는 것입니다 MIDL IDL에서 유형 라이브러리 (.tlb)를 만듭니다. 이것은 필요합니다 library IDL의 차단. .tlb가 있으면 실행할 수 있습니다 tlbimp.exe C# 정의/인터 로프 DLL을 얻기 위해.

다른 팁

IDL에 어떤 데이터 유형/구조가 사용됩니까? 이미 빌드 유형이없는 경우 먼저 C#에서 데이터 유형을 정의해야합니다.

다음 도구를 사용하여 구조물을 변환 할 수 있지만 OUPUT를 수동으로 확인해야합니다.

다운로드 : http://download.microsoft.com/download/f/2/7/f279e71e-efb0-4155-873d-5554a0608523/clrinsideout2008_01.exe

이 유틸리티는 다음과 같습니다 P/호출을위한 Windows API 상수 및 스트러크 액세스.

원래 2008 년 1 월 기사는 이제 .CHM 도움말 파일 다운로드, 바닥에 연결되어 있습니다 https://msdn.microsoft.com/magazine/msdn-magazine-issues. 당분간 소스 코드는 다음에서 찾을 수 있습니다. http://clrinterop.codeplex.com/.

예를 들어, 최근 XPS Print API를 사용했으며 XpsObjectModel.h 인터페이스가 필요했습니다. Windows SDK에는 xpsobjectmodel.idl이 다행히 제공됩니다.

MIDL을 먼저 사용하여 TLB 파일을 생성하고 TLBIMP를 사용하여 C# 프로젝트의 '참조 ...'섹션에 추가 할 준비가 된 적절한 DLL 어셈블리를 생성했습니다.

프로젝트 프레임 워크에 올바른 버전이있는 도구를 사용하십시오. 예를 들어, 프로젝트 프레임 워크가 3.5 기반 인 경우 4.0 도구 세트에서 TLBimp를 사용하여 작동하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top