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

Posted

技术标签:

【中文标题】在 Visual Studio 2010 中编译 IDL 文件时无法生成必要的文件【英文标题】:can not generate necessary file when compile IDL file in visual studio 2010 【发布时间】:2012-05-29 23:04:24 【问题描述】:

我正在通过 Internet 教程 (http://www.codeguru.com/cpp/com-tech/activex/tutorials/article.php/c5567/Step-by-Step-COM-Tutorial. .htm)。首先是创建一个 IDL 文件并编译它以创建另外 5 个文件。详情如下:

    打开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("Code Guru 算法实现的接口。") ] 库 CodeGuruMathLib 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 Ultimate,但没有任何变化。

【问题讨论】:

你只声明了一个接口,它只是一个声明。现在你需要实现它。使用 ATL 简单对象向导来获得正确的希望。 【参考方案1】:

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

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

【讨论】:

谢谢。我再次制作了例程,每次都编译正常,并且“解决方案资源管理器”中没有出现额外的文件,但它确实在 AddObj 目录中创建了 4 个文件。我以前从未看过 AddObj 目录,;)),但它仍然没有 IAdd.tbl 文件。在您的帮助下,我也知道了 Visual Studio 命令提示符并尝试了它,但没有任何反应,命令后没有生成文件。无论如何,当我知道如何编译 idl 文件时真的很高兴。非常感谢你

以上是关于在 Visual Studio 2010 中编译 IDL 文件时无法生成必要的文件的主要内容,如果未能解决你的问题,请参考以下文章

如何用visual studio2010编译已经写好的C#的源代码

在 Visual Studio 2010 和 Visual Studio 2012 中,带有 col、colgroup、tbody 和 thead 的 HTML 表格标记引发编译错误

为啥这段代码不能在 Visual Studio 2010 中编译和运行?

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

Visual Studio 2010中的Visual C++如何编译、连接和运行?

如何用pcl配置visual studio 2010