2014-07-15 2 views
1

Visual Studio 2013으로 업그레이드 된 여러 프로젝트가 포함 된 레거시 Visual Studio 솔루션이 있습니다. 이러한 프로젝트 중 하나는 COM DLL을 생성합니다. 이 DLL의 TLB는 importlib 속성을 통해 다른 프로젝트의 IDL 파일로 가져옵니다.importlib 특성을 사용할 때 MIDL2015 경고

경고 MIDL2015 : MIDL 컴파일러는 다음과 같은 경고를 생성 종속 프로젝트의 IDL 파일을 컴파일하려고 할 때 나는 TLB의 전체 경로를 사용하면 importlib

에서 TLB를로드하지 못했습니다 그것을 작동 파일.

MIDL -> 추가 포함 디렉토리에 대한 경로를 추가하려했지만 IDL, 헤더 및 ACF 파일 (/I switch)에만 해당한다고 생각합니다.

또한 링커 -> 추가 라이브러리 디렉토리 속성을 시도했지만이 중 하나도 작동하지 않았습니다.

importlib 속성을 확인할 때 MIDL에서 사용하는 검색 경로는 무엇입니까?

+0

다른 프로젝트의 상대 경로를 사용해야한다고 생각합니다. – sharptooth

+0

빌드 구성을 기반으로 디렉토리로 이동한다는 점을 제외하고는. #ifdefs (MIDL 컴파일러와 함께 작동하는 경우) 함께 그 주위에 얻을 수있을 것 같아요. RC 파일을 손상시키지 않고 TLB 파일 (예 : 디버그 용)에 접미사를 추가하는 방법을 찾지 못했습니다. – Steiny

답변

3

midl.exe에는 직관적이지 않지만 검색 할 디렉터리를 지정하는 명령 줄 옵션이 없습니다. midl.exe가 c : \ windows \ system32에 저장된 파일 인 importlib ("stdole2.tlb")에 어떤 문제가 없는지 확인하십시오.

프로젝트 + 속성, VC++ 디렉터리는 .tlb가 저장된 경로를 Executable Directories 설정에 추가합니다. 완료 후 "c : \ temp"를 추가하면 "c : \ temp; $ (ExecutablePath)"와 같이 보입니다.

많은 상을 받는다는 확신이 들지 않습니다. 생성 된 또는 .tlb를 예측 가능한 경로에 저장하면 importlib 지시문에서 상대 경로를 사용할 수 있으므로 앞으로 1 년 내에 헤드 스크래칭에 대한 놀라움이 줄어 듭니다.

+0

몇 번 읽어야했지만 지금 무슨 뜻인지 안다. 고마워. 그게 내가 생각해 낼 수있는 것보다 훨씬 낫다. 나는 importlib을 IDL 파일로 가져 오기 위해 대체하려고 노력하고 있었다. 비록 내가 tbh를하고 있었는지 정말로 명확하지 않았다. 아직도이 모든 것들의 의미와 사용법을 배우려고 노력합니다. – Steiny

관련 문제