私はQMake
gen *.vcproj
(from *.pro
) を使用して、C++ クラスを QML (Qt5.0.1/MSVC2010) に公開する DLL を作成します。DLL は動作します。
ただし、2 つの問題があります (関連している可能性があります)。
- 「ビルド」すると、常に DLL 内のすべてが再コンパイルされます。(決して「最新」ではありません。)
- 「リンク失敗」が発生した場合 (たとえば、一部の入力ライブラリに必要な関数が定義されていない場合)、MSVC はすべての
*.obj
ファイルとその他の中間ファイルを削除し、次のビルドでそれらの中間ファイルを (不必要に) 再構築する必要があります。(「リンクの成功」は中間*.obj
ファイルを残しますが、次のビルドでは強制的に再生成されます。) これは、「input- static-リブ」。
これらは両方とも奇妙に思えます。そして、彼らは私を悲しませます。
.vcproj
毎回「再生成」するため、ディスク上に存在しない「プロジェクト内のファイル」は存在しないことに注意してください(他の人は、常に再構築をトリガーする原因として観察しています)。
サービスパックの再インストール、クリーンビルド、すべての中間体/アーティファクトの手動削除、再起動などの「ばかげたこと」をすでに試しました。
Web 検索から (これを回避するために何週間にもわたって多くの本を読んでいます)、これは次のことに関連している可能性があります。
- 各 DLL には「中間 OBJ」用の独自のディレクトリがありますが、それらはすべて同じ (共有デバッグ)「出力」フォルダに書き込みます
.dll/.lib
。(それでいいはずですよね?)
「適切な修正」に失敗した場合 (MSVC が最新であることを認識した場合)、中間ファイルの削除を抑制して、後で単なる「再リンク」を強制できる回避策はありますか?物事がうまくいくはずだと私が知っているとき?現在、中間体が削除されるため、「プロジェクトのみ=>リンクのみ」はできません。(MSVC が.obj
ファイルを削除するのを止める方法は?)