草庐IT

Python 使用 ctypes 传递 char * 数组并填充结果

我正在尝试使用ctypes在python中创建一个char*数组,以将其传递给用于填充字符串的库。我希望返回的4个字符串每个长度不超过7个字符。我的代码是这样的测试库.pyfromctypesimport*primesmile=CDLL("/primesmile/lib.so")getAllNodeNames=primesmile.getAllNodeNamesgetAllNodeNames.argtypes=[POINTER(c_char_p)]results=(c_char_p*4)(addressof(create_string_buffer(7)))err=getAllNode

python - 使用 ctypes 进行标准输出重定向

我正在尝试将printf函数的输出重定向到Windows上的一个文件。我在python3中使用ctypes来调用函数。我的代码是:importos,sysfromctypesimport*if__name__=='__main__':print("begin")saved_stdout=os.dup(1)test_file=open("TEST.TXT","w")os.dup2(test_file.fileno(),1)test_file.close()print("pythonprint")cdll.msvcrt.printf(b"Printffunction1\n")cdll.ms

Python,使用 ctypes 创建 C++ 类包装器

我很清楚C++没有标准的ABI,所以这就是我所做的://trialDLL.h#ifndefTRIALDLL_H_#defineTRIALDLL_H_classMyMathFuncs{private:doubleoffset;public:MyMathFuncs(doubleoffset);~MyMathFuncs();doubleAdd(doublea,doubleb);doubleMultiply(doublea,doubleb);doublegetOffset();};#ifdef__cplusplusextern"C"{#endif#ifdefTRIALDLL_EXPORT#de

python - 使用 ctypes 在 Python 中使用 Rust 返回的数组

我有一个返回array的Rust函数,我想在Python中使用这个数组,它可以是list或numpy.array这并不重要。我的Rust函数如下所示:#[no_mangle]pubexternfnmake_array()->[i32;4]{letmy_array:[i32;4]=[1,2,3,4];returnmy_array;}我正尝试在Python中这样调用它:In[20]:importctypesIn[21]:fromctypesimportcdllIn[22]:lib=cdll.LoadLibrary("/home/user/RustStuff/embed/target/rel

python - 如何返回指向ctypes中结构的指针?

我尝试将一个结构指针作为返回值从函数“bar”传递给函数“foo_write”。但是我收到错误消息“TypeError:mustbeactypestype”forline'foo=POINTER(temp_foo)'。在ctypesonlinehelp我发现'ctypes.POINTER'只适用于ctypes类型。你知道另一种方法吗?你会推荐什么?C:typedefstructFOO_{inti;float*b1;float(*w1)[];}FOO;foo*bar(intfoo_parameter){...voidfoo_write(FOO*foo)带有ctypes的Python:cl

pointers - Python ctypes : copying Structure's contents

我想用ctypes在Python中模拟一段C代码,代码是这样的:typedefstruct{intx;inty;}point;voidcopy_point(point*a,point*b){*a=*b;}在ctypes中,无法执行以下操作:fromctypesimport*classPoint(Structure):_fields_=[("x",c_int),("y",c_int)]defcopy_point(a,b):a.contents=b.contentsp0=pointer(Point())p1=pointer(Point())copy_point(p0,p1)因为conten

python - pyenv 失败并显示 : ModuleNotFoundError: No module named '_ctypes' error

我已经看到了https://bugs.python.org/issue34036但这没有帮助。我正在尝试使用以下命令安装pythonpyenvinstall3.7.0但它抛出以下错误如果缺少你需要的版本,尝试升级pyenv:DownloadingPython-3.7.0.tar.xz...->https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xzInstallingPython-3.7.0...BUILDFAILED(Ubuntu16.04usingpython-build20180424)Inspectorcleanup

python - 如何将 NumPy 数组与 ctypes 一起使用?

我仍在使用ctypes为我的c代码编写python接口(interface)。今天我用python版本替换了我的文件读取功能,它是由其他人使用NumPy编写的。“旧”c版本是使用byref(p_data)而p_data=PFloat()调用的(见下文)。main函数接受p_data。旧文件阅读:p_data=POINTER(c_float)foo.read(filename,byref(p_data))result=foo.pymain(p_data)另一方面,python文件读取函数返回一个NumPy数组。我现在的问题是:如何将NumPy数组转换为POINTER(c_float)?我

Python ctypes : Python file object <-> C FILE *

我正在使用ctypes用Python包装一个C库(我可以控制)。我想用声明包装一个C函数:intfread_int(FILE*stream);现在;我想在python中打开文件,然后使用Python文件对象(以某种方式??)访问底层FILE*对象并将其传递给C函数:#PythonfileH=open(file,"r")value=ctypes_function_fread_int(?????)fileH.close()Python文件FILE*映射是否完全可能?乔金 最佳答案 Python文件对象不一定有底层C级FILE*--至少,

python - 将 C 结构转换为 ctypes.Structure 的工具?

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion当我使用ctypes时,我大部分时间都花在将C结构转换为ctypes.Structure上,如果它是某些Windows结构,则将工作加倍以转换typedef'ed数据类型。这是一个单调乏味的过程。是否有一些可用的工具可以自动执行此操作?