【发布时间】:2016-09-21 16:28:32
【问题描述】:
我在 D 中创建了一个简单的加密程序,我想用它创建一个 DLL 并尝试将其导入到 Python 中。
我可以简单地调用我的main 函数,因为它不需要任何参数。但是当我谈到我的加密方法时,它使用动态长度 ubyte[] 数组,但据我所知,它们在其他基于 C/C++ 的语言中不存在强>。
例如,我的一个函数的第一行是:ubyte[] encode(ubyte[] data, ubyte[] key){
但是我不能在其他语言中使用没有固定长度的数组! 例如,如何在 Python 中导入该函数?
编辑:
我知道我可以创建一个包含指针和数组长度的包装器,但是没有更优雅的解决方案吗?
(这里我不需要使用 D 来使用 D 编写的库)
【问题讨论】:
-
我不确定你在 Python 中到底是怎么做的,但是 C 包装器可以通过创建一个接受数据指针和长度的小函数来完成,然后将其转发到切片.因此,如果您能弄清楚如何将 Python 数组转换为 C 数组,那么您可以将 C 转换为 D,然后就可以了。
-
@AdamD.Ruppe 是的,这是我的第一个想法。看起来不错,但我认为有更优雅的解决方案。
-
dlang.org/spec/interfaceToC.html 似乎在
C中没有任何type[]的匹配类型... -
也许您已经可以使用 pyd (github.com/ariovistus/pyd) 做到这一点??