在 Delphi 7 中使用 C++ Boost 图形库 (BGL)
Posted
技术标签:
【中文标题】在 Delphi 7 中使用 C++ Boost 图形库 (BGL)【英文标题】:Using C++ Boost Graph Library (BGL) in Delphi 7 【发布时间】:2013-05-23 14:41:22 【问题描述】:在我维护的大型 Delphi 7 项目中,数据以图形结构表示,随着边数的增加,求解所需的时间呈指数增长。
我知道可以使用 BGL 中的函数以更高的速度解决该图,但是,我不相信我可以将标题 (.hpp) 直接包含到项目中。
我有哪些选择?有没有办法包含标头,或者我是否需要在 Pascal 中重写所需的功能时考虑重写?
【问题讨论】:
打包库并将其作为 DLL 公开。或者找到这个算法的 Delphi 实现,不管它实际上是什么。 DLL 选项听起来很有希望,您认为这会导致大量通信开销吗?算法是push_relabel_max_flow,但是目前还没有找到Delphi的实现。 如果切换算法的性能提升很大,那么在 DLL 中调用函数的性能成本是微不足道的。这只是一个函数调用。仅此而已。 TeamB 的 Rudy Velthuis 写了一篇关于 Using C++ Objects in Delphi 的文章,这可能对您有所帮助,但使用 BGL 不仅仅是包装单个函数。我很难提出替代方案,因为您没有提供任何有关该功能具体用途的信息。 “求解图形”到底是什么意思?在这个问题中,这似乎是一个巨大的模糊区域。 【参考方案1】:最后,很容易构建一个暴露所需 BGL 功能的 C++ DLL。
我在http://www.autoitscript.com/forum/topic/131058-example-dll-in-c-visual-studio/ 找到了一个简单的示例 DLL 项目,并在项目配置中简单地包含了 boost 库。
我公开的函数只是调用了所需的 BGL 功能并返回了结果。
【讨论】:
以上是关于在 Delphi 7 中使用 C++ Boost 图形库 (BGL)的主要内容,如果未能解决你的问题,请参考以下文章