小编Kri*_*ans的帖子

dll与visual studio之间的循环依赖关系

我有两个函数之间的循环依赖.我希望这些函数中的每一个都驻留在它自己的dll中.是否可以使用visual studio构建它?

foo(int i)
{
   if (i > 0)
      bar(i -i);
}
Run Code Online (Sandbox Code Playgroud)

- >应该编译成foo.dll

bar(int i)
{
   if (i > 0)
      foo(i - i);
}
Run Code Online (Sandbox Code Playgroud)

- >应该编译成bar.dll

我在visual studio中创建了两个项目,一个用于foo,一个用于bar.通过玩'参考'并编译几次,我设法获得了我想要的dll.我想知道视觉工作室是否提供了一种以干净的方式做到这一点的方法.

如果foo改变了,bar不需要重新编译,因为我只依赖于bar的签名,而不是bar的实现.如果两个dll都有lib存在,我可以将新功能重新编译为两者中的任何一个,整个系统仍然有效.

我尝试这个的原因是我有一个循环依赖的遗留系统,目前静态链接.出于各种原因,我们想要转向dll.我们不想等到清理所有循环依赖项.我正在考虑解决方案,并在linux上用gcc尝试了一些东西,在那里可以做我建议的.因此,您可以拥有两个彼此依赖的共享库,并且可以彼此独立构建.

我知道循环依赖并不是一件好事,但这不是我想要的讨论.

c++ dll circular-dependency

10
推荐指数
4
解决办法
9786
查看次数

标签 统计

c++ ×1

circular-dependency ×1

dll ×1