1

我知道,当您使用 dlopen() 加载动态 C++ 库时,您可以获取指向该库中函数的指针,但是有没有办法有效地(性能很重要)以另一种方式做到这一点?

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

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

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

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

4

1 回答 1

2

“但我对动态库不是很有经验”

这就是要说的暗示:你不想这样做。

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

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

于 2013-07-10T20:04:39.527 回答