Python 3.x Python3.5绑定的PyType_Check()备选方案

Python 3.x Python3.5绑定的PyType_Check()备选方案,python-3.x,crystal-lang,Python 3.x,Crystal Lang,我正在Crystal lang中进行一个项目,该项目嵌入了Python3.5链接Python.so库(noPython.hheader)。 似乎PyType\u Check()和其他检查函数实际上是宏,因此它们在链接库时不可见。 是否有其他替代方案或解决方法?确切地说,C宏在Crystal中不可用。但是,您只需要从Crystal给他们打电话。在编译的C库中,它们已经被扩展了 所以你可以在Crystal中实现这些宏。当然,您必须对嵌套宏进行一些展开。 据我所知,没有简单的解决办法。例如,也会忽略类

我正在Crystal lang中进行一个项目,该项目嵌入了Python3.5链接Python.so库(no
Python.h
header)。 似乎
PyType\u Check()
和其他检查函数实际上是宏,因此它们在链接库时不可见。
是否有其他替代方案或解决方法?

确切地说,C宏在Crystal中不可用。但是,您只需要从Crystal给他们打电话。在编译的C库中,它们已经被扩展了

所以你可以在Crystal中实现这些宏。当然,您必须对嵌套宏进行一些展开。
据我所知,没有简单的解决办法。例如,也会忽略类似宏的函数,因为它们无法轻松转换为Crystal。

是的,似乎唯一的解决方案是绑定其他Python类型的函数,并获取包含所有内置类型的列表,然后在Crystal中实现这些宏。但是有没有可能绑定表示Python类型的内置变量?它们不是指针,在Crystal中声明相同的strict将毫无意义……如果它们被定义为宏,则无法绑定它们。它们不存在于已编译的库中。为了在不使用头文件的情况下使用它们,您需要在Crystal绑定中定义它们。这没什么不好的。您应该看看bindgen,它可以从头文件自动生成Crystal绑定。