0

Visual Studio2005でWindowsXPのソリューションを構築しようとしています。このソリューションには、81のプロジェクト(静的ライブラリ、exe、dll)が含まれており、パートナーによって正常に使用されています。私は彼らのリポジトリからソリューションバンドルをコピーし、私たちのグループの3人の同様のマシンにセットアップしてみました。2台のマシンで成功しましたが、ソリューションを自分のマシンで構築できませんでした。

私のマシンでのビルドで2つの問題が発生しました。

  1. 最大の静的ライブラリ(デバッグモードで約522Mb)の単純なビルド作成中に、「13> libd \ ui1d.lib:致命的なエラーLNK1106:無効なファイルまたはディスクがいっぱいです:0x20101879をシークできません」というメッセージで失敗します。

  2. 完全なソリューションの再構築によりこのライブラリが作成されますが、ライブラリをメインの.exeファイルにリンクする場合、devenv.exeは約80Mbの物理メモリと250MBの仮想メモリを消費するlink.exeを生成し、同じことを行う別のlink.exeを生成します。 。これは、システムのメモリがなくなるまで続きます。ビルドを成功させることができた同僚のPCでは、リンクに必要なすべてのメモリ(物理的に約500Mb)を使用するlink.exeプロセスは1つだけです。

私のマシンには十分なハードドライブスペースがあり、ファイルシステムはNTFSです。

Core2Quadプロセッサ、4GbのRAM、WindowsXPSP3の3つのシステムはすべて類似しています。同じソースからインストールされたVisualStudioを使用しています。

別のRAMとCPUを使用し、専用のグラフィックアダプターを使用して、ビルドに影響を与えるビデオメモリ共有の可能性を排除し、ソリューションファイルを別の場所に配置し、異なるバージョンのVS 2005(Professional、Standard、およびTeam Suite)を使用して、利用可能な仮想メモリ、memtest86を実行し、プロジェクトを最初から構築します(つまり、クリーンなバンドル)。

MSDNがLNK1106について述べていることを読みましたが、「ヒープスペースが不足している」ことを除いて、どのケースも当てはまりませんが、これとどのように戦うべきかわかりません。

私が残した唯一のアイデアはOSを再インストールすることですが、それが役立つかどうかはわかりません。また、自分の状況が別のマシンで繰り返されないかどうかもわかりません。

誰か私に何かアドバイスはありますか?

ありがとう

4

1 に答える 1

2

はい、522 メガバイトは、32 ビット バージョンの Windows で割り当てることができる仮想メモリの連続したチャンクとほぼ同じ大きさです。これは大きなライブラリの 1 つなので、分割する必要があります。

64 ビット バージョンの Windows でビルドすることで、避けられない事態を先延ばしできる可能性があります。32 ビット プログラムは、4 GB 近くのはるかに大きな仮想メモリ スペースを取得します。

于 2010-04-02T16:40:01.860 に答える