And introduce using distutils -> http://feelmare.blogspot.kr/2014/02/python-study-c-module-for-using-in_11.html
open visual studio
make project -> win32 console application
check DLL, Empty project on setting page
make new .c file and set property
select Include directories and Library directories on the VC++ Directories page.
In my case, My installed python is located
Include -> C:\Python33_32\include
Library -> C:\Python33_32\libs (Caution, not LIB folder)
Notice, my compile option is release, because I have only release version lib(python32.lib),
Python32_d.lib file is not support default.
If you compile by debug version, you rebuild python source code to debug version by CMake.
programing this source code and compile~!
#include "Python.h" #pragma comment(lib, "python33.lib") static PyObject * spam_strlen(PyObject *self, PyObject *args) { const char * str = NULL; int len = 0; if(!PyArg_ParseTuple(args, "s", &str)) return NULL; //main source code len = strlen(str); return Py_BuildValue("i", len); } static PyMethodDef SpamMethods[] = { {"strlen", spam_strlen, METH_VARARGS, "count a string length."}, {NULL, NULL, 0, NULL} //represent end of array }; static struct PyModuleDef spammodule = { PyModuleDef_HEAD_INIT, "spam", //name of module "It is test module.", //description -1, SpamMethods }; PyMODINIT_FUNC PyInit_spam(void) { return PyModule_Create( &spammodule); }---
rename ~.dll to spam.pyd
If module name is not matched, cannot use module, error occurred when run in python.
copy spam.pyd into python\LIB folder
In the python, programing following source and run~!
...
import spam print( spam.strlen( "Hello world") )---
No comments:
Post a Comment