저는 인터넷 자습서 (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 파일을 컴파일 할 때 필요한 파일을 생성 할 수 없습니다.
- 열기 VS2010
- 에서 Win32 DLL 프로젝트 이름이 AddObj
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 궁극적 인 것을 설치하지만 아무것도 바뀌지 않는다.
인터페이스 만 선언 했으므로 선언 사항 일뿐입니다. 이제 * 구현 *해야합니다. ATL 간단한 개체 마법사를 사용하여이 문제를 해결할 수 있기를 바랍니다. –
고마워요 –