Python 调用VC++的动态链接库(DLL)

yipeiwu_com7年前Python基础
1. 首先VC++的DLL的导出函数定义成标准C的导出函数:
复制代码 代码如下:

#ifdef LRDLLTEST_EXPORTS
#define LRDLLTEST_API __declspec(dllexport)
#else
#define LRDLLTEST_API __declspec(dllimport)
#endif

extern "C" LRDLLTEST_API int Sum(int a , int b);
extern "C" LRDLLTEST_API void GetString(char* pChar);

//a + b
LRDLLTEST_API int Sum(int a , int b)
{
return a + b;
}

//Get a string
LRDLLTEST_API void GetString(char* pChar)
{
strcpy(pChar, "Hello DLL");
}


2. Python中调用如下:
复制代码 代码如下:

from ctypes import *

fileName="LRDllTest.dll"
func=cdll.LoadLibrary(fileName)
str = create_string_buffer(20)
n = func.Sum(2, 3)
func.GetString(str)

print n
print str.raw

关于C语言中的一些参数类型详见:http://www.python.org/doc/2.5/lib/node454.html

3. 输出结果:
5
Hello DLL

相关文章

python实现图书借阅系统

本文实例为大家分享了python实现图书借阅系统的具体代码,供大家参考,具体内容如下 部分代码: from flask import Flask,render_template fr...

python实现的一个p2p文件传输实例

考虑到我手上的服务器逐渐的增多,有时候需要大规模的部署同一个文件,例如因为方便使用systemtap这个工具定位问题,需要把手上几百台服务器同时安装kernel-debuginfo这个包...

简单了解Python下用于监视文件系统的pyinotify包

什么是inotify:   Inotify是一个事件驱动的通知机制,Inotify 提供一个简单的API,使用最小的文件描述符,并且允许细粒度监控。与 inotify 的...

Python通过future处理并发问题

Python通过future处理并发问题

future初识 通过下面脚本来对future进行一个初步了解: 例子1:普通通过循环的方式 import os import time import sys import re...

Python面向对象程序设计类的多态用法详解

本文实例讲述了Python面向对象程序设计类的多态用法。分享给大家供大家参考,具体如下: 多态 1、多态使用 一种事物的多种体现形式,举例:动物有很多种 注意: 继承是多态的前提 函数重...