我有两个函数之间的循环依赖。我希望这些函数中的每一个都驻留在自己的 dll 中。是否可以使用 Visual Studio 构建它?
foo(int i)
{
if (i > 0)
bar(i -i);
}
-> 应该编译成 foo.dll
bar(int i)
{
if (i > 0)
foo(i - i);
}
-> 应该编译成 bar.dll
我在 Visual Studio 中创建了两个项目,一个用于 foo,一个用于 bar。通过使用“参考”并编译几次,我设法获得了我想要的 dll。但是,我想知道 Visual Studio 是否提供了一种以干净的方式执行此操作的方法。
如果 foo 发生变化,bar 不需要重新编译,因为我只依赖 bar 的签名,而不依赖于 bar 的实现。如果两个 dll 都存在 lib,我可以将新功能重新编译到两者中的任何一个中,整个系统仍然可以工作。
我尝试这样做的原因是我有一个具有循环依赖关系的遗留系统,该系统当前是静态链接的。出于各种原因,我们希望转向 dll。我们不想等到清理完所有循环依赖项。我正在考虑解决方案并在 linux 上使用 gcc 尝试了一些事情,并且可以按照我的建议进行操作。因此,您可以拥有两个相互依赖并且可以相互独立构建的共享库。
我知道循环依赖不是一件好事,但这不是我想要的讨论。