22

VS2008を使用した大規模なVC++プロジェクトの新しいソリューション構成に取り組んでいます。この構成でマルチコアビルドフラグ/MPを使用したいと思います。

ただし、COMラッパークラスを生成する「#import」機能はコードベース全体に散在しており、/MPを使用する場合はこの機能はサポートされません。

#importが機能しない理由を理解しました。誰かがこの問題に直面したかどうか、およびどのように回避したかを知りたいですか?

私は次のことをしています:

  • 小規模または支援を超えたプロジェクトでは/MPフラグを使用しないでください。(たぶん私は後で彼らに戻ってきます)
  • #importを削除し、より標準的なMIDLで生成されたヘッダー(#include)に置き換えました。これは、古い学校のCOMに簡単に変換できるいくつかの場所でのオプションにすぎません。
  • 残りのライブラリを#インポートする新しいプロジェクトを作成します。最初にそのビルドを作成します。#以前にインポートしたすべての場所に作成する.tlhファイルを含めます。

他に何か提案がありますか?また、最後のポイント(新しいプロジェクトを作成し、そこでのみ#importを使用する)-このようなことをした場合、どのように行いましたか?どのような種類のプロジェクト、「ソース」はどのように見えましたか、どこにファイルを出力しましたか?それらをどのように含めましたか?(あなたが知っている、私のためにすべての考えをしてください!)

4

2 に答える 2

9

同じファイルを #import する 2 つのソース ファイルを含むプロジェクトがあります。/MP でコンパイルすると、両方のソース ファイルが同時に .tlb を作成しようとしたため、アクセス拒否エラーが発生することがありました。これを修正するには、プリコンパイル済みヘッダーを有効にし、#import をプリコンパイル済みヘッダー ソース ファイルに追加します。

于 2009-01-12T15:20:31.507 に答える
8

プロジェクト全体に対して /MP オプションを使用してから、/MP1オプションを使用して 1 つのファイルに対して例外を作成できます。

于 2009-06-05T12:36:46.400 に答える