2011-07-15 68 views
1

我有两个dll模块。模块A和B“A”呼叫的功能“B”。并且“B”调用功能“A”来放置结果。 “B”依赖于“A”,“A”依赖于“B”。当我编译(清洁)项目 - 我有一个问题。 (I必须删除模块依赖 - 评一些线 - 编译 “A” - 然后 “B” 然后取消注释线,添加依赖性和再次编译 “A”)C++编译模块依赖性问题。逻辑问题

模块A:

callFuncmoduleB(PARAMS);

模块B callFuncmoduleB

// Qt logic使用信号 - >插槽新建线程和Http请求。在完成的Http请求 - 解析它callPARSEFuncmoduleB;

模块B callPARSEfuncmoduleB:

callSETRESULTFuncmoduleA(结果).....

模块A:callSETRESULTFuncmoduleA

callsFuncModuleGUI并设置结果GUI

+0

Windows,C/C++? – themel

+0

头文件应该解决这个问题。 – sharptooth

+0

Windows,C/C++?是 – Stepchik

回答

1

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

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

如果MUST有循环依赖,你将不得不涉水进入工具链深一点,开始here。简而言之,可以创建一个存根.LIB文件,您需要链接到一个DLL,而无需实际编译该DLL。

参考:circular dependencies between dlls with visual studio

+0

你的答案是有用的。谢谢。 – Stepchik