2 つの関数間に循環依存関係があります。これらの各関数を独自の dll に常駐させたいと考えています。これをビジュアルスタジオでビルドすることは可能ですか?
foo(int i)
{
if (i > 0)
bar(i -i);
}
-> foo.dll にコンパイルする必要があります
bar(int i)
{
if (i > 0)
foo(i - i);
}
-> bar.dll にコンパイルする必要があります
Visual Studio で 2 つのプロジェクトを作成しました。1 つは foo 用、もう 1 つは bar 用です。「参照」をいじって数回コンパイルすることで、必要な dll を取得することができました。ただし、ビジュアルスタジオがこれをクリーンな方法で行う方法を提供しているかどうかを知りたいです。
foo が変更された場合、bar の実装ではなく、bar の署名のみに依存するため、bar を再コンパイルする必要はありません。両方の dll に lib が存在する場合、新しい機能を 2 つのうちのいずれかに再コンパイルしても、システム全体は引き続き機能します。
私がこれを試している理由は、現在静的にリンクされている循環依存関係を持つレガシー システムがあるためです。さまざまな理由から、dll に移行したいと考えています。すべての循環依存関係をクリーンアップするまで待ちたくありません。私は解決策について考えていて、Linuxでgccを使っていくつか試してみましたが、私が提案したことを実行することが可能です。したがって、互いに依存し、互いに独立して構築できる 2 つの共有ライブラリを使用できます。
循環依存が良いことではないことはわかっていますが、それは私がしたい議論ではありません。