Posted in Python onSeptember 06, 2008
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 调用VC++的动态链接库(DLL)
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@