0

我有以下问题:

我必须项目Project1Project2。在Project1中,我有一个接口IMyInterface。在Project2中,我有一个接口IMyInterface2,其方法接收指向IMyInterface1的指针。

当我使用import "Project1.idl"时;在我的Project2.idl中,#include "Project1.h"出现在Project2___i.h中。但是这个文件甚至不存在!将定义到其他库中的接口导入 idl 文件的正确方法是什么?

我试图用#include "Project1_i.h"#include "Project1_i.c" 替换 #include "Project1.h" 但它给了我很多错误。

我还尝试使用importlib("Project1.tlb")并在库定义中定义我的接口IMyInterface2 。但是当我编译 Project2PS 项目时,会引发一个错误(如果没有定义接口,则不会生成类似dlldata.c的东西)。

我试图创建一个虚拟Project1.h。但是在编译Project2___i.h时,编译器找不到MyInterface1。如果我包含Project1___i.h,我会再次遇到很多错误!

显然,这是一个简单的问题,但我不知道如何解决它。我坚持这一点!

顺便说一句,我使用的是 VS2008 SP1。

提前致谢。

4

1 回答 1

2

不要在头文件中包含 *_i.c 文件。您可以从源文件 (.cpp) 中执行此操作,这是一种将其链接的简单方法。

编辑

您可以完全独立地处理单独的 IDL 文件及其产品。在包含从每个 IDL 文件生成的普通头文件的阶段之前,无需担心组合它们。

要处理 IDL,请将其添加到项目中。这会导致 MIDL 在其上运行,并输出一个头文件。(默认情况下它还会输出其他东西,但它们不是必需的)。

我建议你让你的 IDL 文件将它们的头文件写到一个单一的、通用的包含目录中,然后你可以将它添加到任何需要使用接口的项目的包含路径中。

然后只需使用#include为您需要的每个接口拉入头文件。由于公共的包含目录在项目的路径上,因此嵌套#include的目录header2.h将能够拉入header1.h.

于 2009-07-29T19:39:28.560 回答