Python 调用VC++的动态链接库(DLL)_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

时间: 2024-10-14 18:58:48

Python 调用VC++的动态链接库(DLL)_python的相关文章

Python调用C/C++动态链接库的方法详解_python

本文以实例讲解了Python调用C/C++ DLL动态链接库的方法,具体示例如下: 示例一: 首先,在创建一个DLL工程(本例创建环境为VS 2005),头文件: //hello.h #ifdef EXPORT_HELLO_DLL #define HELLO_API __declspec(dllexport) #else #define HELLO_API __declspec(dllimport) #endif extern "C" { HELLO_API int IntAdd(in

python 调用HBase的简单实例_python

新来的一个工程师不懂HBase,java不熟,python还行,我建议他那可以考虑用HBase的thrift调用,完成目前的工作. 首先,安装thrift 下载thrift,这里,我用的是thrift-0.7.0-dev.tar.gz 这个版本 tar xzf thrift-0.7.0-dev.tar.gz cd thrift-0.7.0-dev sudo ./configure --with-cpp=no --with-ruby=no sudo make sudo make install 然

Ruby能调用vc写的dll文件吗?

问题描述 在sketchup中用ruby进行二次开发 解决方案 可以的,ruby中可以通过win32api直接调用dll文件的解决方案二:能调用,但需要dll的def文件!

python调用新浪微博API项目实践_python

因为最近接触到调用新浪微博开放接口的项目,所以就想试试用python调用微博API. SDK下载地址:http://open.weibo.com/wiki/SDK 代码不多十几K,完全可以看懂. 有微博账号可以新建一个APP,然后就可以得到app key和app secret,这个是APP获得OAuth2.0授权所必须的. 了解OAuth2可以查看链接新浪微博的说明. OAuth2授权参数除了需要app key和app secret还需要网站回调地址redirect_uri,并且这个回调地址不允

C#调用VC++写的DLL时报错:无效的托管/非托管类型组合(Int16/UInt16 必须与 I2 或 U2 成对出现)

问题描述 函数原型:unsignedshortGX_GetMessageForWindows(unsignedshortWaitTime,PGX_MESSAGE_INFOpMessageBuffer)功能:获取USB语音盒的事件参数:WaitTime无意义,保留pMessageBuffer指向GX_MESSAGE_INFO结构的地址指针,用于存放返回的事件,GX_MESSAGE_INFO的结构定义如下:typedefstruct_GX_MESSAGE_INFO{USHORTMessageCode

python调用java的Webservice示例_python

一.java端首先我使用的是java自带的对webservice的支持包来编写的服务端和发布程序,代码如下.webservice的接口代码: 复制代码 代码如下: package com.xxx.test.ws; import javax.jws.WebMethod;import javax.jws.WebService; /** * Created with IntelliJ IDEA. * User: Administrator * Date: 14-3-5 * Time: 下午3:11 *

PB中使用VC++编制的DLL

一.DLL概述: 动态链接库(Dynamic-Link Library),简称DLL,是基于Windows程序设计的一个非常重要的组成部分.使用DLL有许多优点: (1)使用DLL的动态连接不是将库代码拷贝,只在程序中记录函数的入口点和接口,在程序执行时才将库代码装入内存,如果有多个程序使用相同的DLL,也只需将DLL在内存中装载一次,节省了内存开销. (2)DLL是基于Windows的程序模块,它不仅包含可执行代码,还可以包含数据,各种资源,扩大了库文件的使用范围. (3)对于一个大型的.不断

VC++动态链接库(DLL)编程深入浅出

  4.2 声明导出函数 DLL中导出函数的声明有两种方式:一种为4.1节例子中给出的在函数声明中加上__declspec(dllexport),这里不再举例说明;另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出.属性及其他方面的信息. 下面的代码演示了怎样同.def文件将函数add声明为DLL导出函数(需在dllTest工程中添加lib.def文件): ; lib.def : 导出DLL函数 LIBRARY dllTest EXPORTS add

VC++动态链接库(DLL)非MFC DLL介绍

  4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数. 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件).注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5.6节要讲述的MFC 动态链接库. 图6 建立一个非MFC DLL 在建立的工程中添加lib.h及lib.cpp文件,源