我运行的是Python3.9,64位,并且已经将libharu和一些扩展编译成DLL,包括使用VS2022的libpng.在添加了最少的代码调整后,DLL可以加载到Python中,以找到libhpdf.dll所依赖的VS运行时DLL,并且似乎可以工作(绑定中只有5个.py文件) 我已经构建了dll,使ptrace能够跟踪进度.我还用该DLL动态构建了C语言演示,它们都能正常工作,生成PDF.
我正在try 运行绑定中包含的一个pythondemo示例,arc_demo.py 希望生成与之相同的PDF文件
我可以断定一切正常,直到下面这行代码添加了一个文档:
pdf = HPDF_New (error_handler, NULL)
个
与使用编译后的C版本的样例获得的跟踪输出类似.
但是...变量"pdf"不是HP_AddPage()所期望的,因为在发出下一个调用时,要添加一个页面
page = HPDF_AddPage (pdf)
个
我遇到了这样的情况:
**ctypes.ArgumentError: argument 1: <class 'OverflowError'>: int too long to convert**
我认为这可能与原始绑定仅用32位构建和测试的事实有关.另一个嫌疑人是移植的ctype.
所以现在我正在修改绑定,主要是hpdf.py.
目前,正在与Python到DLL的交互进行斗争,判断ctype是否按预期处理.使用byref
,将*pdf*转换为c_void_p
,...运气不好.如果调用是由ref(c_void_p(Pdf))完成的,但无法正确访问HPDF_Doc struct 的内容,则可以消除错误
有什么建议吗?你可能会给予帮助吗?调试Python和基于C的动态链接库的对比方法?
谢谢, 伊格纳西奥
PS:最终会为Haru PDF内部 struct 编写类.但这将在稍后,在我能够正确运行一个Python样例之后进行.