gpt4 book ai didi

c++ - 两种函数调用方式(C++ 动态库)

转载 作者:行者123 更新时间:2023-11-30 04:16:44 28 4
gpt4 key购买 nike

我知道当您使用 dlopen() 加载动态 C++ 库时,您可以获得指向该库内函数的指针,但是有没有一种方法可以有效地(性能很重要)另一个怎么办?

我知道我可以在库中调用一个函数(在初始化库时),将一组指针传递给函数,或者只是将指针全部单独发送给一个函数。 (尽管数组可能会更好,因为它允许我添加功能但不需要更新所有旧插件)

我不确定这是否有效,因为可能有数百个函数,将所有这些函数发送到大约 10 个库可能效率不高。

但我对动态库不是很有经验,所以我只是想知道你们是否知道这样做更好。

编辑:也许将所有这些函数放在一个类中,然后通过函数调用发送一个类指针?那行得通吗?

最佳答案

"But I am not very experienced with Dynamic Libraries"

这是在暗示:你不想这样做。

也许看看Boost Extension (不是 boost 的官方部分),它在这里采用高级 C++ 方法。

也就是说,大多数平台都在一定程度上支持这一点。例如。 AIX 上的 XlC++ 有 rtld(它需要一个明确的“导出”符号映射,IIRC),我在 Windows 和 Linux 上也有同样的工作(我们的第 3 方工作流引擎需要它)。发送 fptr 数组似乎最实用,更接近“插件”模式。

关于c++ - 两种函数调用方式(C++ 动态库),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17579754/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com