我有一个 COM 项目,其中包含许多 IDL 文件,其中一些被导入到其他文件中。Visual Studio 如何决定首先编译哪些(使用 MIDL)?
我想控制顺序。我有一个主 IDL 文件,其中包含我的库声明和几个导入,如果它不是第一个编译的,我会收到构建错误。
(如果这听起来真的很奇怪......我是 COM/ATL 的新手,这真的非常令人困惑)。
我有一个 COM 项目,其中包含许多 IDL 文件,其中一些被导入到其他文件中。Visual Studio 如何决定首先编译哪些(使用 MIDL)?
我想控制顺序。我有一个主 IDL 文件,其中包含我的库声明和几个导入,如果它不是第一个编译的,我会收到构建错误。
(如果这听起来真的很奇怪......我是 COM/ATL 的新手,这真的非常令人困惑)。
您不能要求 Visual Studio 按特定顺序构建 .ild 文件。相反,您可以将#include
一些 .idl 文件放入其他 .idl 文件中,并将您导入的文件设置为“从构建中排除”。这样 MIDL 不会单独编译导入的文件,而是将它们的内容包含到另一个文件的特定位置并作为该文件的一部分进行编译(与 C 预处理器的效果相同#include
)。
你可以让 Visual Studio 以你想要的任何顺序构建东西,有两种方法可以做到这一点:
放入一个预构建步骤,您可以在其中构建您希望首先构建的那些。
将您想要首先构建的项目放在一个单独的项目中,并通过让您的另一个项目依赖它来使其首先构建该项目。
如果您无法修改 idl 文件,您应该这样做。但是,如果一个 idl 文件确实依赖于另一个文件,并且您可以修改它们,那么请执行上面的建议并让一个文件包含另一个文件。