用于从Python调用C++代码的CFFI模块
CFFIpp的Python项目详细描述
CFFIpp是类似[CFFi](http://cffi.Read Tex.org),但是BR/>通过C++将其映射到C,通过BR/> BR/>许可证< BR> > BR/= BR/>< BR/> CFFIpp是自由软件:您可以重新发布和/或修改< BR/>根据GB/T/R> Free发布的GNU通用公共许可证的条款。软件基础,许可证的第3版,或BR/>(按您的选择)任何后续版本。
BR/> CFFIpp被分发,希望它是有用的,
但没有任何保证;甚至没有隐含的保证BR/>适销性或适合特定用途。有关详细信息,请参阅gnu通用公共许可证。
如果没有,请参见http://www.gnu.org/licenses/>;
示例
==
>直接来自单元测试:
``python
ffi=ffipp()
ffi.cdef(“
class testclass{
public:
testclass();
void test(int);
int returnsint(int);
私有:
void shouldnotbeimodule();
};
“”
自.asserttrue(ffi.has_class(“testclass”))
ffi.set_source(“example_module”,“br/>类testclass{
公共:
testclass(){
void test(int){/*nop*/}
int returnsint(int){return 1;}
私有:
void shouldnotbeimodule(){/*nop*/}
};“”“
ffi.compile()
import example_module
c=example_module.testclass()
self.assertequal(c.returnsint(5),1)
`````
这是一个实验软件;
2。在Python和C++类之间添加一个(虽然很小)层,使用一个愚蠢的C包装器。不支持重载,还没有类型转换,除了“cffi”之类的东西。从方法返回C++对象将不会产生Python对象。
5。只会包装类,目前不能与c混合。
6.具有讽刺意味的是,您可能需要cPython来运行此操作,因为它依赖于BR/> CLAN绑定来处理C++代码。
开发< BR/>开发版= BR/> BR/>开发在[我的GITLab]仓库中进行(http://gITLab.COM/RuDOS/CFFIP/)。如果你想开始攻击这个项目,
请随意这样做。好的起点是todo.md文件和前面列出的注意事项。
BR/> CFFIpp被分发,希望它是有用的,
但没有任何保证;甚至没有隐含的保证BR/>适销性或适合特定用途。有关详细信息,请参阅gnu通用公共许可证。
如果没有,请参见http://www.gnu.org/licenses/>;
示例
==
>直接来自单元测试:
``python
ffi=ffipp()
ffi.cdef(“
class testclass{
public:
testclass();
void test(int);
int returnsint(int);
私有:
void shouldnotbeimodule();
};
“”
自.asserttrue(ffi.has_class(“testclass”))
ffi.set_source(“example_module”,“br/>类testclass{
公共:
testclass(){
void test(int){/*nop*/}
int returnsint(int){return 1;}
私有:
void shouldnotbeimodule(){/*nop*/}
};“”“
ffi.compile()
import example_module
c=example_module.testclass()
self.assertequal(c.returnsint(5),1)
`````
这是一个实验软件;
2。在Python和C++类之间添加一个(虽然很小)层,使用一个愚蠢的C包装器。不支持重载,还没有类型转换,除了“cffi”之类的东西。从方法返回C++对象将不会产生Python对象。
5。只会包装类,目前不能与c混合。
6.具有讽刺意味的是,您可能需要cPython来运行此操作,因为它依赖于BR/> CLAN绑定来处理C++代码。
开发< BR/>开发版= BR/> BR/>开发在[我的GITLab]仓库中进行(http://gITLab.COM/RuDOS/CFFIP/)。如果你想开始攻击这个项目,
请随意这样做。好的起点是todo.md文件和前面列出的注意事项。