python - 为什么 2019 年我们仍然不能使用 ctypes 从 Python 调用 C++?

标签 python c++ c ctypes abi

它仍然困扰着我。毕竟,C 也没有完全标准化的 ABI,但它可以与 ctypes 一起使用。为什么 C++ 不能实现同样的效果?

我找到了这个blog post该文章声称该问题的政治意义大于技术意义,但它是 12 年前写的。这个说法今天仍然准确吗?

最佳答案

事实上,你可以! (只是不适用于 ctypes) https://cppyy.readthedocs.io/en/latest/

但是,为了实现这一点,它实际上嵌入了一个 C++ 解释器,但并没有带来太大的性能优势。

C++ 没有官方 ABI 的一个原因是编译器非常注重性能,他们需要跨越函数和类边界来优化。使用不同的设置,即使具有相同的 ABI,您也可能会获得不同的接口(interface)。一个很好的例子是返回值优化(RVO),它改变函数签名以避免复制大型结构。

另一个原因是 C++ 是 super 元,大多数现代功能都依赖于生成代码并重新编译的模板。因此,您只需使用 C++ 易于编码的部分内容。

关于python - 为什么 2019 年我们仍然不能使用 ctypes 从 Python 调用 C++?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58615722/

相关文章:

python - 在python 3中打印set容器时,它打印时没有顺序

c++ - Wii MotionPlus 支持

c - 当范围(x!= y)之间没有素数时,如何添加另一种情况

c - 唤醒多个条件变量

python - 在 matplotlib 图中将鼠标限制在 Canvas 区域

python - 如何测试 Django QuerySets 是否相等?

python - pd.pivot_table 如何/在哪里存储或引用其索引和列变量的名称?

c++ - Boost Intrusive unordered_set 静态成员函数返回错误的大小类型

c++ - 将可修改右值引用绑定(bind)到可修改左值

c - 操作系统中的循环调度算法