如何将字符串指针传递给共享库?

时间:2014-01-28 19:48:13

标签: python c string pointers python-2.7

我遇到了以下问题:我想在python中为低音库(http://www.un4seen.com/)创建绑定并遇到以下问题: 该库允许为存储在内存中的文件创建流。但文档只是说它请求一个void *文件指针,没有任何关于包含格式,没有。我尝试了几个用ctypes玩的东西,试过以下(在Windows 7 x64机器上使用python 2.7):

import ctypes
data=open('my filename.wav').read()
pointer=ctypes.POINTER(data)
cdata=ctypes.c_char_p(data)
cpointer=ctypes.byref(cdata)

然而,无论我传入我的函数,它都会导致pythonic异常或者bass返回错误,因为已经指定了非法参数类型。你可以在https://github.com/Timtam/Bass4Py找到我编程的代码 这就是我要传递文件的地方。可能我想让它变得尽可能简单,给函数提供一个包含文件内容的字符串,并将这个字符串转换为我可以给bass的格式,这样它就会创建流。但是现在我坚持接受贝斯和指针问题的简单接受...... 如果有人能够阅读我的代码并解释要做什么,也许有人已经使用过bass,也许还有python,这将是非常好的? 当然我在这里搜索并尝试搜索模式,如“用ctypes传递字符串指针”等等,并尝试了我发现的所有内容,但实际上我不知道贝斯想要什么...... 提前谢谢。

1 个答案:

答案 0 :(得分:0)

我没有查看代码。但是,根据您所描述的内容,我建议您查看WinApi函数CreateFileCreateFileMappingOpenFile(依此类推)和PyWin32。它在Linux中完成的方式是identical