2009-11-30 7 views
4

Microsoft의 C++ 컴파일러에서 Visual Studio를 사용하여 Microsoft에 고유 한 '#import'지시문을 사용하여 형식 라이브러리를 가져 오는 여러 소스 파일이 있습니다. 예를 들어 : #import 명령 줄 입력

#import my_type_lib.tlb 
나는 소스 코드에서 # import를 제거하고 명령 줄 단계로 교체하고 싶습니다

은 GNU를 통해 실행하는

는합니다. 필요한 인터페이스 정의 (.idl 소스 코드)는 빌드 중에 사용할 수 있습니다.

#import에 대한 의존성을 제거하고 명령 줄을 통해 실행되는 특수 빌드 도구로 바꾸려면 어떻게합니까?

답변

1

필자가 아는 한, lib 유형의 코드를 생성하는 별도의 도구는 없습니다.

#import을 한 번 수행 한 다음 생성 된 파일을 숨겨둔 다음 정규 원본 파일로 포함 할 수 있습니다. 그런 다음 형식 라이브러리를 변경하면 파일을 재생성하기위한 새로운 감독 빌드가 필요합니다.

생성 된 정보 중 어느 부분을 사용하고 있습니까? 이를 사용하여 IID, 인터페이스 및 CLSID를 가져오고 .IDL이있는 경우 MIDL.EXE를 사용하여 C++ 표현을 생성 할 수 있습니다.

래퍼 클래스 (IxxxPtr)를 사용 중이라면 #import에 의해 생성되는 운이 좋지 않을 것으로 생각됩니다.

+0

버머. MIDL을 사용하여 .IDL을 컴파일하면 헤더 파일과 몇 개의 소스 파일 (.C)이 생성됩니다. 소스 파일을 컴파일하고 프로젝트에 연결하면 # import'ing TLB와 같을까요? –

+0

형식 정의에서 인터페이스 정의, IID 및 CLSID를 가져 오는 경우에만 가능합니다. 포장지를 얻지 못할 것입니다. –

2

형식 라이브러리에서 .tli/.tlh 파일을 생성하기 위해 직접 컴파일러를 사용할 수 있습니다. 에 거기에서

...\>cl.exe imports.cpp 

// imports.cpp 
#import "foo.dll" 
#import "bar.dll" 

int main(int argc, char* argv[]) 
{ 
} 
당신과 같이, #import 래퍼, 그리고 쓸모없는 .exe 파일을 생성 할 수 CL.EXE를 사용할 수

같은 간단한 소스 파일로

, , #include 일반 소스 코드의 래퍼 (foo.tlh/.tli).

#import에 대한 개선 사항이 확실하지 않지만 적어도 코드 기반에서 #import을 추출했습니다.