Python c ++ extensions in Ubuntu are much easier to write than php. phpize is not very useful. Compile a pythonmodhelloworld123456789101112131415161718192021222324 # include "Python. h "PyObject * hello (PyObject * self, PyObject *
Python c ++ extensions in Ubuntu are much easier to compile than php.
Phpize is not a good thing either.
Compile a python mod hello world
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
# Include "Python. h"
PyObject*Hello(PyObject*Self, PyObject*Args){ Const Char *Str;
If (!PyArg_ParseTuple(Args,"S",&Str)) Return NULL;
ReturnPy_BuildValue("S", Str); }
StaticPyMethodDef helloMethods[] = { {"Hello", Hello, METH_VARARGS,"Hello comments"}, {NULL,NULL, 0,NULL}
};
PyMODINIT_FUNC inithello(Void){ Py_InitModule("Hello", HelloMethods); } |
Several parts of a Python mod
1. Extended Function hello
PyObject * hello (PyObject * self, PyObject * args ){
Only such a structure can be used.
PyArg_ParseTuple Processing Parameters
2. Function list helloMethods
Static PyMethodDef helloMethods
3 initialization function inithello
Init function name
Compile
Install python-dev in ubuntu
Sudo apt-get install python-dev
The yum server should be
Python-devel
1 2 3 4 5 6 7 8 9 10
|
All:Hello.So
Hello.So:Hello.O G++ -Shared hello.O-O hello.So
Hello.O:Hello.Cpp G++ -FPIC-C-I/Usr/Include/Python2.6/ -O hello.O hello.Cpp
Clean: Rm-F hello.O hello.So |
Use
Write a test. py file.
1 2 3 4 5
|
#! /Usr/bin/env python
ImportHello
PrintHello.Hello('World') |
The. so directory of the current directory will be loaded when python is running.