littlewolfintheice 2023-08-18 09:08 采纳率: 0%
浏览 7

【python】如何将枚举指针传递至dll接口中

我所使用的dll中有如下定义的枚举类型

typedef enum _STATUS
{
    FAILED = 0,
    SUCCESS
} STATUS;

有如下定义的接口:

int GetStatus(OUT STATUS* Status);

可以看到,该接口唯一的参数Status在c++中是个枚举指针类型,
我在使用python脚本调用该接口时,尝试了直接定义一个整型指针传入,但是不行:

dll = cdll.LoadLibrary('xxxx.dll')
# 到这一步是没有问题的,dll能够正常加载
status = POINTER(c_int)()
ret = dll.GetStatus(status)
# 接口返回的错误码显示 我输入的参数格式错误

请问我该如何在python(3.7)中定义一个枚举类型变量,并将它传入该接口?

  • 写回答

2条回答 默认 最新

  • Marst Code 2023-08-18 09:33
    关注

    问题点:如何定义一个枚举类型变量(传给动态库dll)
    要使用ctypes库来定义一个枚举类型变量并传递给动态库(dll)
    代码示例如下:

    import ctypes
    # 定义变量 类型
    status_type = ctypes.c_int
    # 赋值
    status = status_type (1)
    
    dll = cdll.LoadLibrary('xxxx.dll')
    ret = dll.GetStatus(status)
    
    评论

报告相同问题?

问题事件

  • 创建了问题 8月18日

悬赏问题

  • ¥15 哪个tomcat中startup一直一闪而过 找不出问题
  • ¥15 这个怎么改成直流激励源给加热电阻提供5a电流呀
  • ¥50 求解vmware的网络模式问题 别拿AI回答
  • ¥24 EFS加密后,在同一台电脑解密出错,证书界面找不到对应指纹的证书,未备份证书,求在原电脑解密的方法,可行即采纳
  • ¥15 springboot 3.0 实现Security 6.x版本集成
  • ¥15 PHP-8.1 镜像无法用dockerfile里的CMD命令启动 只能进入容器启动,如何解决?(操作系统-ubuntu)
  • ¥30 请帮我解决一下下面六个代码
  • ¥15 关于资源监视工具的e-care有知道的嘛
  • ¥35 MIMO天线稀疏阵列排布问题
  • ¥60 用visual studio编写程序,利用间接平差求解水准网