在Visual Studio 2010中编译IDL文件时无法生成必要的文件

can not generate necessary file when compile IDL file in visual studio 2010

本文关键字:文件 2010 Studio 编译 IDL Visual      更新时间:2023-10-16

我正在通过互联网教程(http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c5567/Step-by-Step-COM-Tutorial.htm)学习COM。第一件事是创建一个 IDL 文件并将其编译为创建另外 5 个文件。详细信息如下:

  1. 打开 VS2010
  2. 创建 Win32 DLL 项目名称 AddObj
  3. 添加包含内容的 IAdd.idl 文件

    导入"unknwn.idl";

    [ 对象 UUID(1221db62-f3d8-11d4-825d-00104b3646c0), helpstring("接口 IAdd 用于实现超快速加法算法") ]

    接口 IAdd : 未知 { HRESULT SetFirstNumber(long nX1);

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

    [ uuid(3FF1aab8-F3D8-11D4-825D-00104B3646C0), helpstring("Interfaces for Code Guru algorithm implementations .") ] 库代码大师数学库 { importlib("stdole32.tlb"); importlib("stdole2.tlb");

    接口 IAdd; }

之后,按照教程进行操作,如果我编译 IAdd.idl 文件,它将生成:

-

-IAdd.h 包含C++样式接口声明。

-

-dlldata.c 包含代理 DLL 的代码。在其他进程/计算机上调用对象时很有用。

-

-IAdd.tlb 二进制文件 ,具有定义良好的格式,完全描述了我们的接口 IAdd 及其所有方法。此文件将分发到COM组件的所有客户端。

-

-IAdd_p.c 包含代理 DLL 的封送代码。在不同的进程/计算机上调用对象时很有用。

-

-IAdd_i.c 包含接口 IID

但是当我通过右键单击它并在快捷菜单中选择编译来编译 IAdd 时,没有生成任何文件。但是当打开视图类时,我可以看到带有某些方法的 IAdd 接口。

我也尝试通过从互联网下载midl.exe并在命令行中运行来手动编译它,但它失败了。

通过谷歌罚款了很多材料,所有人都说我可以通过Visual Studio编译idl文件,但我尝试了很多次,在我的两台计算机上,但在编译idl文件后没有生成文件。我还安装了新的Win7,新的Visual Studio 2010旗舰版,但没有任何变化。

我刚刚创建了一个新项目,并使用您指定的代码创建了一个新的 idl 文件。如果我右键单击并选择编译,它可以正常工作(VS2010旗舰版)。
您是否在 VS 的文件属性中选择了正确的文件类型?它应该是"IDL 文件"。

您是否在尝试手动编译时使用过VS命令提示符?
(VS命令提示符将设置所有必要的环境变量)