C ++编译模块依赖问题。逻辑问题

时间:2011-07-15 07:38:02

标签: dependencies

我有两个dll模块。模块A和B.“A”调用函数“B”。并且“B”调用函数“A”来放置结果。 “B”取决于“A”,“A”取决于“B”。当我编译(清理)项目时 - 我遇到了问题。 (我必须删除模块依赖 - 注释一些行 - 编译“A” - 然后“B”然后取消注释行,添加依赖并再次编译“A”)

模块A:

callFuncmoduleB(params);

模块B callFuncmoduleB

//使用signal->槽Qt逻辑新线程和Http请求。完成Http请求 - 解析它callPARSEFuncmoduleB;

模块B callPARSEfuncmoduleB:

callSETRESULTFuncmoduleA(结果).....

模块A:callSETRESULTFuncmoduleA

callsFuncModuleGUI并将结果设置为GUI

< / p>

1 个答案:

答案 0 :(得分:1)

首先,你真的应该尽可能地努力不产生循环依赖。有很多方法,哪一个最适合你取决于你的依赖的确切性质。

  • 将两个DLL合并为一个
  • 使用回调机制(函数指针,B中定义的某些接口)在运行时传递依赖项 例如callFunctionInB(args, callbackInA)
  •   -

如果必须具有循环依赖关系,则必须从here开始更深入地进入工具链。简而言之,可以创建一个存根.LIB文件,您需要链接到DLL而不实际编译DLL。

参考:circular dependencies between dlls with visual studio