Ich habe eine zirkuläre Abhängigkeit zwischen zwei Funktionen. Ich möchte, dass jede dieser Funktionen in einer eigenen DLL liegt. Ist es möglich, dies mit Visual Studio zu bauen?zirkuläre Abhängigkeiten zwischen DLLs mit Visual Studio
foo(int i)
{
if (i > 0)
bar(i -i);
}
-> sollte in foo.dll kompilieren
bar(int i)
{
if (i > 0)
foo(i - i);
}
-> sollte in bar.dll kompilieren
ich zwei Projekte in Visual Studio erstellt haben, eine für foo und eine für Bar . Indem ich mit den 'Referenzen' gespielt und einige Male kompiliert habe, habe ich es geschafft, die DLLs zu bekommen, die ich möchte. Ich würde jedoch gerne wissen, ob Visual Studio eine Möglichkeit bietet, dies auf eine saubere Art und Weise zu tun.
Wenn foo ändert, muss bar nicht neu kompiliert werden, da ich nur auf die Signatur von bar angewiesen bin, nicht auf die Implementierung von bar. Wenn beide DLLs die lib vorhanden haben, kann ich eine neue Funktionalität in beide kompilieren und das ganze System funktioniert immer noch.
Der Grund, warum ich das versuche, ist, dass ich ein Altsystem mit zirkulären Abhängigkeiten habe, das derzeit statisch verknüpft ist. Wir wollen aus verschiedenen Gründen auf dlls zugehen. Wir wollen nicht warten, bis wir alle zirkulären Abhängigkeiten aufgeräumt haben. Ich habe über Lösungen nachgedacht und einige Sachen mit gcc auf Linux ausprobiert und dort ist es möglich zu tun, was ich vorschlage. Sie können also zwei gemeinsam genutzte Bibliotheken verwenden, die voneinander abhängen und unabhängig voneinander erstellt werden können.
Ich weiß, dass zirkuläre Abhängigkeiten keine gute Sache zu haben sind, aber das ist nicht die Diskussion, die ich haben möchte.
Sehr interessante Frage. Ich weiß, dass etwas wie das möglich ist, aber ich weiß nicht wirklich wie - ich denke, es beinhaltet einige spezielle Kommandozeilenparameter für den Linker von einer der DLLs und die andere DLL sollte eine einfache Abhängigkeit haben. – Paulius
@ PM: Wenn das der Fall ist, dann ist es die Art der Sache, die ein konstantes Problem vergessen wird, falsch konfiguriert, etc .. – annakata