2016-07-19 11 views
0

まず、これは私が継承した古いコードで、私はそれをきれいにしていつか完璧にするのが大好きですが、今日はできません。したがって、私は、「循環依存性がないように全部を書き直す」のような答えを与えないように頼んでいます。循環依存関係を持つVisual Studio 2015でC++プロジェクトをビルドするにはどうすればよいですか?

私は44のプロジェクトの解決策を持っています。ほとんどのプロジェクトはDLLといくつかのビルド実行可能ファイルをビルドします。他のプロジェクトに依存する複数のプロジェクトがあります。あるプロジェクトや別のプロジェクトでは、最初のプロジェクトが必要です。いくつかのものはAがB.libを必要とし、BがA.libを必要とするものであり、他は長いループである。

私がコードを継承したとき、それはきれいではなかったし、元のビルドファイル、つまり.LIBファイルがまだ残っていました。これらの.LIBファイルを削除せずに、44個のプロジェクトすべてをビルドすることができ、古い.LIBファイルはすべて新しくビルドされたファイルに置き換えられます。これは、私が2回目を構築すると、古い.LIBのどれも使用されておらず、私の成果物のすべてが現在のソースから完全に生成されていることを示しています。

これは私には問題が残っています。私はバージョンコントロールからすべてのソースファイルを取り除きたいのですが、そうすればプロジェクトをビルドできなくなりました。

DLLをビルドするプロジェクトは、中間段階として.LIBファイルを作成します。これらのファイルは、各プロジェクトの "Additional Library Directories"プロパティと個々の.LIBフォルダにリストされた共通フォルダにコピーされます与えられたプロジェクトに必要なファイルは、そのプロジェクトの「追加の依存関係」プロパティにあります。

編集:私はコードの大幅な見直しをするつもりはありません。私は、すべてのプロジェクトに必要なすべてのオブジェクトファイルが作成されていることを知っています。私はこの構造が最適ではないことも知っています。しかし、私は、リンカが見た目を知っていれば、必要なものすべてを見つけることができると信じています。

答えて

2

新しいDLL 'C'に必要なAの部分だけを抽出します。そして、Aは両方ともB & Cに依存しますが、BはCに依存しますが、BはCに依存します。

これは簡単ではありません。

+0

ありがとうございます。これは確かにオプションであり、おそらく私は最終的に何をする必要があります。 –

+0

これは私がやったことです。それは永遠にかかりましたが、今は機能します。 –

関連する問題