易截截图软件、单文件、免安装、纯绿色、仅160KB

Python笔记(二)——python调用C/C++模块

前一篇讲了简单的C/C++调用Python脚本模块(.py)。既然是用于诸多游戏程序的脚本语言,那肯定是缺不了互调(礼尚往来)。因此,本篇讲一个简单的python调用C/C++写的DLL模块,对Python进行功能扩展。这里写一个简单的例子,主要就为了了解下这么用Python来调用C/C++写的DLL库。好了,切入正题:
 首先,我是用VS2003建的一个DLL工程,将DLL工程属性里面的输出文件的(.dll)改为(.pyd)。当然也可以将生成后的DLL扩展名改为.pyd。呵呵!免得大家以为它很神秘(VC还能生成.pyd库?这种疑问!)好,直接贴代码:
#include <Python.h>
int cmd( const char *arg )
{
     int n = system( arg );
     return n;
}
static PyObject * wrap_cmd_fun( PyObject *self, PyObject *args )
{
     const char * command;
     if ( !PyArg_ParseTuple( args, "s", &command ) )
          return NULL;
     int n = cmd( command );
     return Py_BuildValue( "i", n );
}
static PyMethodDef MyCppMethods[] =
{
     { "MyCppFunc", wrap_cmd_fun, METH_VARARGS, "Execute a shell command." },
     { NULL, NULL, 0, NULL }
};
PyMODINIT_FUNC initMyFirstPythonModule( void )
{
     PyObject *m = Py_InitModule( "MyFirstPythonModule", MyCppMethods );
     if (m == NULL)
         return;
}
这个实例很简单,首先是Py_InitModule用于初始化在Python脚本中要import的模块,这里的模块名是:MyFirstPythonModule。我们在Python中将使用import MyFirstPythonModule 来载入这个模块。这里我们将MyCppMethods作为模块要调用的方法,它是一个PyMethodDef结构。我们可以看到这个结构的数组定义,{ "MyCppFunc", wrap_cmd_fun, METH_VARARGS, "Execute a shell command." }, 红色的就是我们在脚本里面要调用的函数名字,它被映射为wrap_cmd_fun,当在Python脚本中调用MyCppFunc时将会调用wrap_cmd_fun函数。第三个METH_VARARGS成员表示调用方式,可以用或运算连接几个调用方式。第四个成员是一个方法


相关文档:

Python 3.x (1):入门

 
1 你好
#打开新窗口,输入:
#! /usr/bin/python
# -*- coding: utf8 -*- 
s1=input("Input your name:")
print("你好,%s" % s1)
'''
知识点:
    * input("某字符串")函数:显示"某字符串",并等待用户输入.
    ......

C/C++编程技能【整理】

预处理器(Preprocessor)
1. 用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)
#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL
我在这想看到几件事情:
1). #define 语法的基本知识(例如:不能以分号结束,括号的使用,等等)
2). 懂得预处理器将为你计算常数表达式的值,因此,直接 ......

第一个pro*C demo

该程序很简单,就是用C从ORACLE,把当前日期显示出来就OK,作为一个简单的DEMO
(一)写PRO*C
/*===========================================================================
* pro*c编译方法:
* 预编译 proc test.pc
* 编译   gcc -o test test.c $ORACLE_HOME/lib/libclntsh.so
* 作者   f ......

python 帮助文档查看

 这个代码是基于python3.0写的,有许多不完善的地方,请自已修改。
# coding: utf-8
from tkinter import *
root = Tk()
root.title("python3.0查询")
#root.minsize(800,600)
#填充无用空间
Label(root).grid(ipady=5)
#11面板
class Frame11:
    def __init__(self, root):   # ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号