草庐IT

python - 使用 distutils 构建 ctypes -"based"C 库

关注thisrecommendation,我编写了一个原生C扩展库来通过ctypes优化Python模块的一部分。我选择了ctypes而不是编写CPython-native库,因为它更快更容易(只有几个函数,里面有所有紧密的循环)。我现在遇到了一个障碍。如果我希望使用distutils轻松安装我的工作,使用pythonsetup.pyinstall,然后distutils需要能够构建我的共享库并安装它(大概是/usr/lib/myproject)。但是,这不是Python扩展模块,据我所知,distutils无法做到这一点。我找到了一些其他有此问题的人的引用资料:Someoneonnu

python - ctypes 加载具有依赖关系的 c 共享库

在Linux上,我有一个依赖于其他库的c共享库。LD_LIBRARY_PATH已正确设置以允许链接器加载所有库。当我这样做时:libgidcwf=ctypes.cdll.LoadLibrary(libidcwf_path)我收到以下错误:Traceback(mostrecentcalllast):File"libwfm_test.py",line12,inlibgidcwf=ctypes.cdll.LoadLibrary(libidcwf_path)File"/usr/lib/python2.5/ctypes/__init__.py",line431,inLoadLibraryretu

python - 使用 ctypes 列出从 dll 导出的函数

有没有办法知道通过python外部函数库ctypes从dll导出了哪些函数?如果可能的话,可以通过ctypes了解导出函数的详细信息。如果是,有人可以提供一段代码吗? 最佳答案 我认为ctypes不提供此功能。在带有VisualStudio的Windows上:DUMPBIN-EXPORTSXXX.DLL或者对于windows上的mingw:objdump-pXXX.dll 关于python-使用ctypes列出从dll导出的函数,我们在StackOverflow上找到一个类似的问题:

python - Python ctypes 中的指针和数组

我有一个包含C函数的DLL,其原型(prototype)如下:intc_read_block(uint32addr,uint32*buf,uint32num);我想使用ctypes从Python调用它。该函数需要一个指向一block内存的指针,它将结果写入其中。我不知道如何构造和传递这么一大块内存。ctypes文档帮助不大。构造一个数组并将其传递给“byref”,如下所示:cresult=(c_ulong*num)()err=self.c_read_block(addr,byref(cresult),num)给出这个错误信息:ArgumentError:argument3::expec

python - 如何使用 ctypes 将 Python 列表转换为 C 数组?

如果我有以下2组代码,如何将它们粘合在一起?voidc_function(void*ptr){inti;for(i=0;i如何使用x中的连续元素列表调用c_function?我试图将x转换为c_void_p,但这没有用。我也尝试使用类似的东西x=c_void_p*10foreiny:x[i]=e但这会出现语法错误。C代码显然需要数组的地址。我怎样才能做到这一点? 最佳答案 以下代码适用于任意列表:importctypespy_values=[1,2,3,4]arr=(ctypes.c_int*len(py_values))(*py_

python - 如何使用 ctypes 打包和解包(结构 <-> str)

这可能是一个愚蠢的问题,但我在文档或任何地方都找不到好的答案。如果我使用struct定义二进制结构,该结构有2种对称的序列化和反序列化方法(打包和解包),但似乎ctypes没有一个简单的方法来做到这一点。这是我的解决方案,感觉不对:fromctypesimport*classExample(Structure):_fields_=[("index",c_int),("counter",c_int),]defPack(ctype_instance):buf=string_at(byref(ctype_instance),sizeof(ctype_instance))returnbufde

python - ctypes - 初学者

我的任务是将c库“包装”到python类中。文档在这个问题上非常模糊。似乎他们希望只有高级python用户才能实现ctypes。一些循序渐进的帮助会很棒。所以我有我的c库。我该怎么办?我把什么文件放在哪里?如何导入库?我读到可能有一种“自动换行”到Python的方法?(顺便说一句,我在python.net上完成了ctypes教程,但它不起作用。意思是我认为他们假设我应该能够填写其余步骤。)事实上,这是我在使用他们的代码时遇到的错误:File"importtest.py",line1>>>fromctypesimport*SyntaxError:invalidsyntax我真的可以在这方

python - ctypes 错误 : libdc1394 error: Failed to initialize libdc1394

我正在尝试将我的程序编译为一个共享库,我可以使用ctypes从Python代码中使用该共享库。使用此命令可以正常编译库:g++-shared-Wl,-soname,mylib-O3-omylib.so-fPIC[files]`pkg-config--libs--cflagsopencv`但是,当我尝试使用ctypes导入它时fromctypesimport*mylib=CDLL("/path/to/mylib.so")printmylib.test()//Expectedoutput:HelloWorld我收到以下错误:libdc1394error:Failedtoinitialize

python - 在 Python : C, Cython 或 ctypes 中包装 C 库?

我想从Python应用程序调用C库。我不想包装整个API,只包装与我的案例相关的函数和数据类型。在我看来,我有三个选择:用C语言创建一个实际的扩展模块。可能有点矫枉过正,而且我还想避免学习扩展编写的开销。使用Cython将C库中的相关部分公开给Python。在Python中完成所有操作,使用ctypes与外部库进行通信。我不确定2)还是3)是更好的选择。3)的优点是ctypes是标准库的一部分,生成的代码将是纯Python——尽管我不确定这种优势实际上有多大。这两种选择是否有更多优点/缺点?您推荐哪种方法?编辑:感谢您的所有回答,它们为任何想要做类似事情的人提供了很好的资源。当然,仍然

c++ - 无法打开包含文件 : 'ctype.h' : No such file or directory

我在VS2015上安装了c++包,如果我尝试构建项目,出现以下问题:C1083无法打开包含文件:'ctype.h':没有这样的文件或目录Win32Project5c:\programfiles(x86)\windowskits\8.1\include\um\winnt.h31任何可能的解决方案.... 最佳答案 修复/重新安装VisualStudio。确保选中WindowsSDK选项(在您的情况下可能是8.1),正如你在这张图片中看到的: 关于c++-无法打开包含文件:'ctype.h'