gpt4 book ai didi

c++ - 具有许多功能的python-c++接口(interface)的代码的pythonic结构是什么?

转载 作者:行者123 更新时间:2023-11-28 08:17:07 24 4
gpt4 key购买 nike

我正在为 C++ 库编写一个 Python 接口(interface),想知道该库的正确设计。

我发现(困难的方法)所有传递给 python 的方法都必须声明为静态的。如果我理解正确的话,这意味着所有函数基本上都必须在同一个 .cpp 文件中定义。我的界面有很多功能,所以很快就会变得丑陋。

处理这个问题的标准方法是什么?我能想到的可能性:

  • 别担心,使用一个很长的 .cpp 文件
  • 编译成多个库(.so文件)
  • 为每组函数编写一个 .cpp,并将该 .cpp #include 到主要定义 cpp 文件(带有 PyMethodDef 的文件)的主体中

两个人看起来都很丑

最佳答案

I have found out (the hard way) that all methods passed to python must be declared static. If I understand correctly, this means that all functions basically must be defined in the same .cpp file. My interface has many functions, so this gets ugly very quickly.

你是从哪里发现的?这不是真的。关键字 static 在 C++ 中有两种不同的含义。有类静态,这意味着在没有对象实例的情况下调用类范围的函数(就像普通函数一样)。还有静态链接,这意味着您的函数不会添加到全局偏移表中,您将很难在翻译单元(CPP 文件)之外找到它们。

我建议查看 Boost.Python .它们已经解决了您可能会遇到的许多问题,并使 C++ 和 Python 相互对话变得极其容易。

关于c++ - 具有许多功能的python-c++接口(interface)的代码的pythonic结构是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7330279/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com