使用 #import 的多核构建 (/MP) 策略
我正在使用 VS 2008 为我们的大型 VC++ 项目开发一个新的解决方案配置。我希望此配置使用多核构建标志 /MP。
但是,生成 COM 包装类的“#import”功能散布在整个代码库中,并且在使用 /MP 时不支持此功能。
我明白为什么 #import 不起作用,我想知道是否有人遇到过这个问题以及他们如何解决它?
我正在执行以下操作:
- 不在以下项目上使用 /MP 标志帮助很小或超出。 (也许我稍后会再讨论)
- 删除了 #import 并将其替换为更标准的 MIDL 生成的标头 (#include)。 这只是少数几个易于转换为老式 COM 的地方的一个选项。
- 创建一个新项目#imports 剩余的库。 首先进行构建。 #包括它在之前 #imported 的所有位置创建的 .tlh 文件。
我很好奇是否有人有任何其他建议?另外,关于最后一点(制作一个新项目并仅在那里使用#import) - 如果您做了这样的事情,你是怎么做到的?什么类型的项目,“源”是什么样的,你在哪里输出文件? 你是如何将它们纳入其中的? (你知道,为我做所有的思考!)
I'm working on a new solution configuration for our large VC++ project using VS 2008. I'd like this configuration to use the multicore build flag /MP.
However, the "#import" feature of generating COM wrapper classes is sprinkled through-out the code base and this feature is not supported when using /MP.
I understand why #import won't work, I want to know if anyone has faced this issue and how they worked around it?
I am doing the following:
- Not use the /MP flag on projects that are small or beyond help. (maybe I'll come back to them later)
- Removed the #import and replaced it with a more standard MIDL-generated header (#include). This is only an option in a few places that are easy to convert to old school COM.
- Make a new project that #imports the remaining libraries. Make that build first. #Include the .tlh files it creates in all the places that #imported previously.
I'm curious if anyone has any other suggestions? Also, on the last point (making a new project and using #import only there) - if you did something like this, how did you do it? What type of project, what did the "source" look like, where did you output files? How did you include them? (you know, do all the thinking for me!)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我有一个包含两个源文件的项目,其中 #import 相同的文件。 使用 /MP 编译时,偶尔会出现访问被拒绝错误,因为两个源文件都试图同时创建 .tlb。 我通过启用预编译标头并将 #import 添加到预编译标头源文件中来纠正此问题。
I have a project with two source files which #import the same file. When compiling with /MP, it would occasionally get an access denied error since both source files were trying to create the .tlb at the same time. I correct this by enabling pre-compiled headers, and adding the #import into the pre-compiled header source file.
您可以对整个项目使用 /MP 选项,然后使用 /MP1 选项对单个文件进行例外处理。
You can use the /MP option for the project as a whole, and then make an exception for a single file using the /MP1 option.