- 在Visual Studio 2008的菜单 工具->选项,项目与解决方案->VC++目录,右边选择“包含文件”,添加Python安装路径里面的include目录;选择“库文件”,添加Python安装路径里面的libs目录
- 新建项目,项目类型选择C++的MFC DLL。注意项目名要全小写(其实只要最后生成的dll是全小写就可以了,这里为了方便起见)。这里举例项目名为"pytest"
- 删除除了"pytest.{cpp, h}"以外的所有.h 和.cpp
- 打开"pytest.h",删除所有东西。输入"include <Python.h>"
- 打开"pytest.cpp",删除所有东西除了include <pytest.h>这句
- 右击项目->属性,配置属性->C/C++->预编译头,将“创建/使用预编译头”选项设为“不使用预编译头”
- 继续在项目属性窗口,配置属性->链接器->输入,将“模块定义文件”的值删除;配置属性->链接器->常规,把“输出文件”的值中的"dll"替换为"pyd"
在pytest.cpp中插入以下代码模板:
![](https://i-blog.csdnimg.cn/blog_migrate/81178cc93a2a3bb5048d90d76e7ec935.gif)
static
PyObject
*
invoke(PyObject * self, PyObject * args)
{
char * cmdName, * dllName;
PyObject * paraList;
// example
if ( ! PyArg_ParseTuple(args, " ssO " , & dllName, & cmdName, & paraList)) // ParseTuple will raise error when parse fails
return NULL;
else
{
}
}
static PyMethodDef pytest_methods[] = {
{ " invoke " , invoke, METH_VARARGS, " Invoke the function in DLL " },
{NULL, NULL, 0 , NULL}
};
PyMODINIT_FUNC initpytest()
{
Py_InitModule( " pytest " , pytest_methods);
}
invoke(PyObject * self, PyObject * args)
{
char * cmdName, * dllName;
PyObject * paraList;
// example
if ( ! PyArg_ParseTuple(args, " ssO " , & dllName, & cmdName, & paraList)) // ParseTuple will raise error when parse fails
return NULL;
else
{
}
}
static PyMethodDef pytest_methods[] = {
{ " invoke " , invoke, METH_VARARGS, " Invoke the function in DLL " },
{NULL, NULL, 0 , NULL}
};
PyMODINIT_FUNC initpytest()
{
Py_InitModule( " pytest " , pytest_methods);
}