gpt4 book ai didi

c++ - 在 visual studio 2010 中编译 IDL 文件时无法生成必要的文件

转载 作者:行者123 更新时间:2023-11-30 03:01:50 27 4
gpt4 key购买 nike

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

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

    import "unknwn.idl";

    [ object, uuid(1221db62-f3d8-11d4-825d-00104b3646c0), helpstring("interface IAdd is used for implementing a super-fast addition Algorithm") ]

    interface IAdd : IUnknown { 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 .") ] library CodeGuruMathLib { importlib("stdole32.tlb"); importlib("stdole2.tlb");

    interface IAdd; }

之后按照教程,如果我编译IAdd.idl文件,会生成:

--IAdd.h 包含 C++ 风格的接口(interface)声明。

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

--IAdd.tlb 二进制文件,具有定义明确的格式,完整描述了我们的接口(interface) IAdd 及其所有方法。该文件将分发给我们 COM 组件的所有客户端。

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

--IAdd_i.c 包含接口(interface)IIDs

但是当我通过右键单击它并在快捷菜单中选择编译来编译IAdd时,没有生成文件。但是当打开 View 类时,我可以看到 IAdd 接口(interface)有一些方法。

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

我通过 google 搜索了很多资料,所有人都说我可以通过 visual studio 编译 idl 文件,但我尝试了很多次,在我的两台计算机上,但在我编译 idl 文件后没有生成文件。我还安装了新的 Win7、新的 visual studio 2010 ultimate 但没有任何变化。

最佳答案

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

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

关于c++ - 在 visual studio 2010 中编译 IDL 文件时无法生成必要的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10719266/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com