【python使用ctypes调用扩展模块的实例方法】教程文章相关的互联网学习教程文章

OSX 10.6上的Python _ctypes导入错误

我是Python开发的新手,我的OSX中的一个应用程序出了问题. 在这个项目中使用的技术 > python 2.6> django>谷歌应用引擎> rpx(openid) 在我的Windows应用程序上加载网站时没有问题,但在OSX 10.6上尝试使用相同的应用程序时,我遇到以下问题: 在/ rpx / rpx / login /的ImportError 没有名为_ctypes的模块 这是错误发生的地方: /System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ctypes/init.py in # “”在P...

使用Python ctypes,segfault包装C动态数组【代码】

我想包装一个小的C代码,用ctypes分配一个数组,并且在c_void_p对象中存储地址有问题. (注意:有意地将指针强制转换为void *,因为后来我也希望以相同的方式对C对象的数组进行分配.) 要包装的C()函数:void* test_alloc() {const int size = 100000000;int* ptr = new int[size];std::cout << "Allocated " << size * sizeof(int) << " bytes @ " <<ptr << std::endl;return static_cast<void*>(ptr); }void test_dealloc(void* ptr) ...

如何创建指向数组的Python ctypes指针【代码】

我需要学习如何通过Python ctypes处理下面C语言中的char **.我通过使用create_string_buffer()调用其他只需要单指针的方法,但是这个方法需要一个指向指针数组的指针.ladybugConvertToMultipleBGRU32(LadybugContext context,const LadybugImage * pImage,unsigned char** arpDestBuffers,LadybugImageInfo * pImageInfo )如何在ctypes中创建指向六个create_string_buffer(7963648)缓冲区的数组的指针,以传递给...

python – 需要ctypes char *指针【代码】

我有一个C函数返回字符串(char *),让我们称之为foo().在python中我想调用它并使用它的返回值,当我完成后,我想调用另一个C函数来释放返回的字符串foo. 如何获得指针和字符串本身?如果我喜欢这样:fooFunc = foolib.foo fooFunc.restype = c_char_p r = fooFunc()然后我得到字符串,但不是指针.如果我在没有指定restype的情况下这样做,我得到一个似乎是正确地址的int,但每当我尝试使用c_char_p(< address>)将其强制转换为sting时,它就...

python – ctypes中的编译器依赖【代码】

我有一个第三方,封闭的源库,作为使用visual studio 2010构建的windows dll.首先,我计划使用例如为该dll构建扩展模块.痛饮.然而,由于它是使用VS 2010构建的,而所有python 2发行版都是使用VS 2008构建的. 现在似乎ctypes没有这个限制.我用VS 2010构建了一个简单的dll(依赖walker显示dll链接到msvcr100.dll)并带有一个函数:int fnTestLib2(int a, int b) {return a+b; }把它加载到ctypes和fcn = mydll.fnTestLib2 fcn.argtypes = [ct...

使用python.ctypes与cygwin【代码】

我想用cygwin使用python的(2.6.5)ctypes,但我不知道如何加载一个dll. 我试过各种各样的变种>>> form ctypes import * >>> cdll.LoadLibrary("/lib/libcairo.dll.a") Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/usr/lib/python2.6/ctypes/__init__.py", line 431, in LoadLibraryreturn self._dlltype(name)File "/usr/lib/python2.6/ctypes/__init__.py", line 353, in __init__self._handle =...

python – 使用可变长度arg列表创建绑定到C函数的ctypes【代码】

假设我有可变长度参数列表的C函数:int some_func(int arg1 , ... );是否可以(容易?)使用ctypes从python调用此函数? 更新: 实施了塞德里克的建议,其效果如同魅力:libc = ctypes.CDLL( "/lib64/libc.so.6" , ctypes.RTLD_GLOBAL ) printf = getattr( libc , "printf") printf("String1:%s int:%d String2:%s double:%lg\n" , "Hello" , 10 , "World" , ctypes.c_double( 3.1415 ))用ctypes.c_double()函数作为唯一的小麻烦.所以...

python – 设置ctypes.Structure默认值【代码】

这不起作用:class ifinfomsg(ctypes.Structure):_fields_ = [('ifi_family', ctypes.c_ubyte),('__ifi_pad', ctypes.c_ubyte),('ifi_type', ctypes.c_ushort),('ifi_index', ctypes.c_int),('ifi_flags', ctypes.c_uint),('ifi_change', ctypes.c_uint(0xFFFFFFFF))]它错误:File "rtnetlink.py", line 243, in <module>class ifinfomsg(ctypes.Structure): TypeError: Error when calling the metaclass basessecond ...

我可以使用ctypes从C中嵌入的python中回调C函数吗?【代码】

我有一个嵌入了python代码的C程序.我从源代码编译了python 2.7.2,并将我的程序与libpython2.7.a相关联. 现在在我的python代码中,我希望调用链接到我的C程序的其他C库中的函数.我可以编写一个python扩展(参见this document中的扩展嵌入式Python).但是,ctypes会使这更容易,并允许我使用一些未加密的现有代码. ctypes面向加载共享库,我想知道是否有办法将其“指向”我的静态程序代码. 我无法将相关代码编译到共享库中,因为我的目标是i...

Python Ctypes异常:访问冲突读取【代码】

我尝试通过DLL(由PLC制造商分发的C API接口)与PLC通信.我正在使用Python 3.1作为脚本环境嵌入到其他软件中(x64 – Windows 7). 我设法让一些DLL函数工作,但现在得到一个“访问违规读取”,我无法解决. 有关DLL函数的信息:LONG AdsSyncReadReq(PAmsAddr pAddr,ULONG nIndexGroup,ULONG nIndexOffset,ULONG nLength,PVOID pData );参数: > pAddr:[in]结构,带有NetId和ADS服务器的端口号.> nIndexGroup:[in] In...

python – ctypes为c_ulong重新实现rshift【代码】

我通过ctypes访问C库,我遇到了以下问题: 我正在使用ctypeslib生成一个“包装器”(使用ctypes访问库的ctypes命令).C库包含在此步骤中转换为python函数的宏.(为了尽可能独立于库内部,我想在python中使用这些宏中的一些.) 其中一个宏看起来像这样:# using the ctypes types myuint16_t = c_ushort myuint32_t = c_ulongdef mymacro(x): return (myuint16_t)((myuint32_t)(x) >> 16) # macro我想以下列方式在一个单独的模块中使用生成...

Python Ctypes和线程【代码】

为了把它放到上下文中,我正在为C DLL创建一个包装器 – 相当复杂的用例但是请坚持下去! 在我的包装器类的初始化期间,我为我的C DLL函数创建别名,以便我的类可以在以后轻松访问它们.我做的另一项任务是将一个回调函数传递给我的类中的函数到我的DLL,它保存在一个静态变量中,稍后再使用. 最后,我生成另一个线程,它反复调用我的DLL中的一个函数,它执行一些工作,并在其执行的各个点,需要使用在我的类的init阶段分配的回调回调到Python...

如何使用ctypes将Python列表列表转换为C数组?【代码】

从这里看到How do I convert a Python list into a C array by using ctypes?这个代码将采用python数组并将其转换为C数组.import ctypes arr = (ctypes.c_int * len(pyarr))(*pyarr)对列表列表或列表列表执行相同操作的方式是什么? 例如,对于以下变量list3d = [[[40.0, 1.2, 6.0, 0.3], [50.0, 4.2, 0, 0]], [[40.0, 1.2, 6.0, 0.3], [50.0, 4.2, 0, 0]], [[40.0, 1.2, 6.0, 0.3], [50.0, 4.2, 0, 0]]]我试过以下没有运气:([[cty...

使用ctypes在Python中使用Fortran可选参数【代码】

我应该如何使用CType正确处理Python中的可选Fortran参数?例如,让我们假设Fortran子例程看起来像:MODULE test_module INCLUDESSUBROUTINE fstr_test(iunit, istat, file1, file2, file3, test, file4, file5)IMPLICIT NONEINTEGER, INTENT(inout) :: iunitINTEGER, INTENT(out) :: istatCHARACTER(LEN=*), INTENT(in) :: file1, file2, file3CHARACTER(LEN=*), INTENT(in), OPTIONAL :: file4, file5INTEGER, OPTIONAL :: testWRI...

Python ctypes:获取变量类型和值问题【代码】

我想通过使用ctypes在一些Python代码中使用C库.我的问题是我不知道C.我一直在尝试阅读代码和C结构几天,但我遇到了一个问题.我也是Python的新手,因为我目前正在从Matlab进行切换,因此我的Python仅限于科学的Python应用程序.这个问题非常具体,但我认为解决方案是一般的C库/ Python链接兴趣. 我正在使用一个名为Iphreeqc的图书馆,这是一个地球化学模型,来自http://wwwbrr.cr.usgs.gov/projects/GWC_coupled/phreeqc/index.html(iphree...

实例 - 相关标签