문제
먼저,
사용 솔직한 C ++, ATL이 없으면 MFC가 COM 객체 인터페이스를 사용하려고 시도합니다.
사용 올리 뷰 (OLE/COM 객체 뷰어) - IDL 코드를 엔지니어링하는 데 사용됩니다.
이 단계에서 사용합니다 미드 컴파일러, 이제 다음을 제작하는 데 어려움을 겪고 있습니다.
CMD 라인의 구문 :
midl /nologo /env win32 /tlb ". s8_.tlb" /h ". s8_.h" /iid ". s8_i.c"s8.idl
- 해당 .TLB (유형 라이브러리)
- a .h (헤더)
- IID 정의에는 파일 (*_i.c)이 포함됩니다.
- 프록시 (*_p.c)
MIDL 컴파일러 오류 :
S8.idl (513) : 오류 Midl2025 : 구문 오류 : "s8simobject"근처의 유형 사양을 기대합니다.
HRESULT LinkSimObjects(
[in] S8SimObject* SourceObject, ####line 513 ####
[in] S8SimObject* DestObject,
[in] float TravelTime);
해결책 2
MIDL 컴파일러 오류
s8.idl (513) : 오류 20125 년 중반 : 구문 오류 : 근처에 유형 사양을 기대합니다 "s8simobject"
해결되었습니다
을 추가하다 선언 선언 - IDL 파일 상단 :
- "ocidl.idl"가져 오기;
- 인터페이스 s8simobject;
다른 팁
글쎄, 나는 여기서 당신의 질문을 실제로 이해하지 못하지만 다음은 도움이 될 것입니다.
- 공개 열거 정의에는 자신의 것이 필요합니다 uuid 정말로 공개적으로.
- 나는 그 열거적인 정의가 실제로 일부 인터페이스 방법에 사용되지 않는 한 유형-시각으로 들어 가지 않는다는 것을 알았습니다. 나는 이것의 이유를 모른다. 아마도 나는 단순한 것을 놓쳤을 것이다 (라이브러리 블록에 그 열거를 추가하는 것 등).
short
일반적으로 단일 정밀 부동산 지점이 아닌 짧은 정수를 의미합니다.- 동등한
float
~이다single
VB에서, 그러나 내가 당신의 다른 질문에서 보았 듯이, 나는 당신이 실제로 교체를 의미한다고 생각합니다.single
~와 함께float
.
그건 그렇고, 하나의 최소 (컴파일 가능한) IDL 파일 (대부분의 정의를 제거)을 게시하는 것이 좋습니다. 이것은 예를 들어 사용하는 것처럼 혼란에 대비합니다. IS8Simulation
당신의 텍스트에서 S8SimObject
복사 한 IDL 스 니펫에서. 또한 예상 결과와 예상치 못한 (귀하를 위해) 오류를 지정하면 도움이됩니다.
편집하다
글쎄, 지금 삽입 한이 컴파일 오류는 간단합니다. S8SimObject
정의되지 않았습니다. 메소드 선언에서 항상 인터페이스를 참조해야합니다 (IS8Simulation
), 인터페이스를 구현하는 코 클라스에 절대.
기존 IDL 파일을 여기에서 바꾸고 있다고 말했듯이 : 기본 목표는 무엇입니까? 원래 IDL 파일이 항상 사용하는 경우 S8SimObject
, 아마도 유일한 문제는 S8SimObject
IDL 파일 상단에 포함되지 않습니까? 유형-자기 정의라면 S8SimObject
주변에서는 Oleview를 사용 하여이 인터페이스의 IDL을 내보낼 수 있습니다.