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语言中的一些参数类型详见:
3. 输出结果:
...
本文转自CoderZh博客园博客,原文链接:http://www.cnblogs.com/coderzh/archive/2008/07/23/1249919.html,如需转载请自行联系原作者