双向函数调用(C++动态库)

Two way function calling (C++ Dynamic Libraries)

本文关键字:动态 C++ 函数调用      更新时间:2023-10-16

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

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

我真的不确定这是否有效,因为可能有一百个函数,而将所有这些函数发送到10个库可能并不有效。

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

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

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

这就是暗示:你不想这么做。

也许看看Boost扩展(不是Boost的官方部分),它采用了高级C++方法。

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