目标:自定义一个C\C++矩阵类,有几个用于演示的矩阵运算函数或者操作,将其通过
PyTypeOject newType的方式注册到python中成为一种新的类型,并且要可继承。
预备知识
建议先运行python源码剖析第6章smallpython的代码,有个直观认识,再从书的第一章看起。
知乎相关type和oject的回答链接放这。
熟悉python和C\C++的混合编程。
C:
https://www.cnblogs.com/btchenguang/archive/2012/09/04/2670849.html
C++:
http://bbs.chinaunix.net/thread-1593255-1-1.html
妈卖批,会提示没有Python.h,然后又提示未定义的引用,解决方法:
先把anaconda中搜到的python2.7的头文件夹复制到/usr/include中,再使用下面的命令:
gcc -I/usr/include/python2.7 test.c -lpython2.7 -o demo
解决方法来自:https://*.com/questions/12955086/compile-file-c-with-embedded-python-c-functions
每一个包装函数主要做三件事:
1.把输入的Python对象转换为C/C++对象;
2.调用C/C++函数;
3.转换C/C++函数处理的输出结果为Python对象,并返回;
http://www.xefan.com/categories/Python%E6%A0%8F%E7%9B%AE/
https://docs.python.org/2.7/extending/index.html
开头的目标还是暂时放一放,还是看THPP、ATen、csrc有趣。
windows下给python添加C、C++扩展编译的时候有几个坑。下面是解决方法:
Unable to find vcvarsall.bat https://www.zhihu.com/question/26857761
我用的是 先命令行运行 SET VS90COMNTOOLS=%VS110COMNTOOLS% ,
然后 python setup.py build的方法。
另外一个,安装了Anaconda后,代码要包括Python.h时也会提示找不到头文件。
下面这个博客解决了:
https://www.zhihu.com/question/23003213/answer/56121859
cl my_python.c -IC:\Python27\include C:\Python27\libs\python27.lib
路径替换成Anaconda中python所在路径。而且命令行要用 VS 的兼容工具命令提示
编辑时间:
1128 0119
1201 0050
1201 0150
2017年12月8日01:30:05