具有许多函数的python-c++接口的代码的python结构是什么?
What is the pythonic structure of the code of a python-c++ interface with many functions?
我正在写一个python接口到一个c++库,我想知道库的正确设计。
我发现(艰难的方式)所有传递给python的方法必须声明为静态。如果我理解正确的话,这意味着基本上所有函数都必须在同一个.cpp文件中定义。我的界面有很多函数,所以很快就会变得很难看。
处理这个问题的标准方法是什么?我能想到的可能性:- 不用担心,使用一个很长的。cpp文件
- 编译成多个库(。所以文件)
- 为每组函数编写一个。cpp,并将该。cpp包含到主定义cpp文件的主体中(带有PyMethodDef的那个)
他们两个看起来都很丑
我已经发现(困难的方式)所有的方法传递给python必须被声明为静态。如果我没理解错的话,这意味着函数基本上必须在同一个.cpp文件中定义。我的接口有很多函数,所以很快就会变得很难看。
你从哪里发现这个的?这不是真的。关键字static
在c++中有两种不同的含义。一类是类静态,这意味着调用类作用域的函数时不需要对象的实例(就像普通函数一样)。还有静态链接,这意味着您的函数不会被添加到全局偏移表中,并且您将很难在翻译单元(CPP文件)之外找到它们。
我建议你看看Boost.Python。它们解决了您可能遇到的许多问题,并使c++和Python相互通信变得极其容易。
为什么你说Python调用的所有函数都必须是静态的?这是通常的情况,为了避免名称冲突(因为任何名称空间等都会被忽略)因为extern "C"
),而是函数是否是静态的与否无关紧要。
当用c++接口一个库时,根据我的经验,它是一般来说,把它变成静态不是什么大问题,把所有的函数在一个单独的转换单元中,因为函数将只是一个小的包装器,它调用实际的c++,通常,会自动从某种补充文件;你肯定不会写出所有的必要的手工模板
相关文章:
- 如何大致将 cpp 代码结构转换为 python
- C++中类似Python字典的结构?
- 如何通过 C 在用户定义的结构中编写双数组并使用 CTYPE 传递给 Python
- 如何使用 SWIG 接口访问 python 中的 C++ typedef'd 结构
- 用于基于节点的树结构的Python绑定
- C 通过 UART 将结构发送到 Python
- Python和Ctypes访问带有嵌套结构的C 类
- 如何为C++结构自动生成 python 数据解析器
- 什么可以用来在 C++ 中保存图形等结构(Python pickle 等效物)
- 如何在python中创建等效的结构并使用malloc更改空指针的引用
- 使用Python将C 结构更改为JSON字符串
- C++/Python 中对象和结构的二进制文件结构
- 使用 pybind11 将自定义结构(指针向量)从 C++ 传递到 python 的方法是什么?
- 序列化python类与C型结构(带有位式结构)以发送插座
- 使用 ctypes 将 python dict 转换为结构
- Python 数据结构及其等效C++
- 使用 boost::p ython,如何将结构体向量作为字典列表返回给 Python
- 如何在 Python 中的结构中使用C++结构
- 如何将CPP结构中的字符串转换为Python struct
- 具有许多函数的python-c++接口的代码的python结构是什么?