22

我正在使用 VS 2008 为我们的大型 VC++ 项目开发新的解决方案配置。我希望此配置使用多核构建标志/MP

但是,生成 COM 包装类的“#import”功能遍布整个代码库,使用 /MP 时不支持此功能。

我明白为什么#import 不起作用,我想知道是否有人遇到过这个问题以及他们是如何解决这个问题的?

我正在执行以下操作:

  • 不要在小型或无用的项目上使用 /MP 标志。(也许我稍后会回到他们身边)
  • 删除了 #import 并将其替换为更标准的 MIDL 生成的标头 (#include)。这只是在几个容易转换为老式 COM 的地方的一个选项。
  • 创建一个#imports 剩余库的新项目。先做那个构建。#包括它在之前#imported 的所有位置创建的.tlh 文件。

我很好奇是否有人有其他建议?另外,关于最后一点(创建一个新项目并仅在此处使用#import) - 如果你做了这样的事情,你是怎么做到的?什么类型的项目,“源”是什么样的,你在哪里输出文件?你是如何包括他们的?(你知道,为我做所有的思考!)

4

2 回答 2

9

我有一个带有两个源文件的项目,它们#import 相同的文件。使用 /MP 编译时,它偶尔会收到拒绝访问错误,因为两个源文件都试图同时创建 .tlb。我通过启用预编译头文件并将#import 添加到预编译头文件源文件中来纠正此问题。

于 2009-01-12T15:20:31.507 回答
8

您可以对整个项目使用 /MP 选项,然后使用/MP1选项对单个文件进行例外处理。

于 2009-06-05T12:36:46.400 回答