2012-05-23 1 views
1

저는 인터넷 자습서 (http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php)를 통해 COM에 대해 배우고 있습니다. /c5567/Step-by-Step-COM-Tutorial.htm). 첫 번째로 IDL 파일을 만들고 컴파일하여 다른 5 개의 파일을 만듭니다. 세부 사항은 후 :Visual Studio 2010에서 IDL 파일을 컴파일 할 때 필요한 파일을 생성 할 수 없습니다.

  1. 열기 VS2010
  2. 에서 Win32 DLL 프로젝트 이름이 AddObj
  3. IAdd.idl는 내용

    수입 "unknwn.idl"로 파일을 추가 생성;

    [ 객체가 UUID (1221db62-f3d8-11d4-825d-00104b3646c0) helpstring는 ("인터페이스 IADD는 초고속 또한 알고리즘의 구현에 사용되는") ]

    인터페이스 IADD :의 IUnknown { HRESULT SetFirstNumber (long nX1);

    HRESULT SetSecondNumber (long nX2); HRESULT DoTheAddition ([out, retval] long * pBuffer); };

    [ UUID (3ff1aab8-f3d8-11d4-825d-00104b3646c0) helpstring ("코드 전문가 알고리즘 구현을위한 인터페이스.") ] 라이브러리 CodeGuruMathLib { importlib ("stdole32.tlb"); importlib ("stdole2.tlb");

    인터페이스 IAdd; } 그 후

는, 내가 IAdd.idl 파일을 컴파일하면, 생성, 튜토리얼을 따르

이 --IAdd.h는 C++ 스타일의 인터페이스 선언을 포함합니다.

--dlldata.c 프록시 DLL에 대한 코드가 들어 있습니다. 다른 프로세스/컴퓨터에서 객체를 호출 할 때 유용합니다.

--IAdd.tlb 우리 인터페이스를 완전히 설명하는 잘 정의 된 형식의 이진 파일은 모든 메소드와 함께 추가됩니다. 이 파일은 COM 구성 요소의 모든 클라이언트에 배포됩니다.

--IAdd_p.c 프록시 DLL 용 마샬링 코드가 들어 있습니다. 다른 프로세스/컴퓨터에서 객체를 호출 할 때 유용합니다.

--IAdd_i.c 인터페이스의 IID에

하지만 난에 의해 IADD를 컴파일 할 때 우측을 클릭하고 바로 가기 메뉴에서 컴파일 선택을 포함, 생성되는 파일이 없 습니 다. 하지만 오픈 뷰 클래스, 나는 어떤 방법으로 인터페이스를 추가 할 수 있습니다.

또한 인터넷에서 midl.exe를 다운로드하여 수동으로 컴파일하고 명령 줄에서 실행했지만 실패했습니다.

구글에 의해 많은 자료를 많이 만들었고 모든 것이 Visual Studio에 의해 idl 파일을 컴파일 할 수 있다고했지만, 두 컴퓨터 모두에서 IDL 파일을 컴파일 한 후에 많은 파일을 생성했지만 아무런 파일도 생성하지 못했습니다. 나는 또한 새로운 Win7, 새로운 Visual Studio 2010 궁극적 인 것을 설치하지만 아무것도 바뀌지 않는다.

+0

인터페이스 만 선언 했으므로 선언 사항 일뿐입니다. 이제 * 구현 *해야합니다. ATL 간단한 개체 마법사를 사용하여이 문제를 해결할 수 있기를 바랍니다. –

+0

고마워요 –

답변

3

방금 ​​새 프로젝트를 만들고 지정한 코드로 새 idl 파일을 만들었습니다. 마우스 오른쪽 버튼을 클릭하고 컴파일을 선택하면 잘 작동합니다 (VS2010 Ultimate).
VS의 파일 속성에서 올바른 파일 형식을 선택 했습니까? "IDL File"이어야합니다.

수동으로 컴파일하려고 했으므로 VS 명령 프롬프트를 사용 했습니까?
(VS 명령 프롬프트에서 필요한 모든 환경 변수를 설정합니다.)

+0

고마워요. 나는 다시 루틴을 만들었고, 매번 "ok"라는 컴파일 작업을했지만, "Solution Explerier"에 추가 파일이 나타나지는 않지만 실제로 AddObj 디렉토리에서 4 개의 파일을 만들었습니다. 나는 전에 AddObj 디렉토리를 보지 못했다.;)), 그러나 여전히 IAdd.tbl 파일을 가지고 있지 않다. 나는 또한 당신의 도움 후에 Visual Studio 명령 프롬프트에 대해 알고 그것을 시도했지만 아무 일도 일어나지 않는다. 명령 후에 생성되는 파일이 없다. 어쨌든, idl 파일을 컴파일하는 방법을 알면 정말 행복합니다. 정말 감사합니다 –

관련 문제