我有一个共享库和一组我想从该共享库公开的函数。 这些函数是 C++ 函数,即它们不是
extern c
。
有人建议我使用名称空间并有一个公开该名称空间的链接器脚本。我不太明白这意味着什么,谷歌在这里没有多大帮助。
是否可以直接从共享库公开名称空间中的 C++ 函数,以便当有人 DLOpens SO 时,它会自动在该名称空间下的应用程序中可用?
大多数时候没有。 基本上,库可以是二进制的(ABI),并且私有函数是无法访问的。 如果您可以隔离要使用的功能,则可以使用具有
private
继承(例如 class foo : private std::list
)的类/结构创建接口,并使用包装函数公开此功能。