在 C 语言中,我习惯于编写一个共享库,可以从任何希望使用它的客户端代码调用,只需链接该库并包含相关的头文件即可。但是,我读到 C++ 的 ABI太不稳定且不标准,无法可靠地调用其他来源的函数。
这让我相信,在 C++ 中创建与 C 一样通用的真正共享库是不可能的,但现实世界的实现似乎表明并非如此。例如,Node.js 公开了一个非常简单的模块系统,它允许使用该函数动态导出extern "C"
纯 C++ 函数(不带)。NODE_SET_METHOD
C++ API 的哪些元素可以安全公开(如果有),以及允许 C++ 代码与其他 C++ 代码交互的常用方法是什么?是否可以创建可以公开 C++ 类的共享库?或者由于 ABI 不一致,是否必须为每个程序单独重新编译这些类?