Андрей-Чжун 2024-01-31 11:19 采纳率: 50%
浏览 36

python调用C#的dll,如何传入ref参数

C#的dll有一个接口是

Test.Data.GetSize("PA", ref width, ref height);

python调用的时候该怎么传入

ref width,ref height

python代码如下

import clr

clr.AddReference(r"D:\11\Test.dll")
import Test
Test.Data.GetSize("PA",?,?)
  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-01-31 11:20
    关注

    引自免费微信小程序:皆我百晓生

    要在Python中调用C#的DLL并传入ref参数,你可以使用Python的ctypes库来实现。ctypes库提供了一种调用C函数的机制,可以用于调用C#的DLL。

    下面是一种可能的解决方案:

    import ctypes
    
    # 加载DLL
    test_dll = ctypes.WinDLL(r"D:\11\Test.dll")
    
    # 定义参数类型
    test_dll.GetSize.argtypes = [ctypes.c_char_p, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int)]
    
    # 定义传入的参数
    width = ctypes.c_int()
    height = ctypes.c_int()
    
    # 调用函数
    test_dll.GetSize(b"PA", ctypes.byref(width), ctypes.byref(height))
    
    # 打印结果
    print("Width:", width.value)
    print("Height:", height.value)
    

    在上面的代码中,我们首先使用ctypes.WinDLL加载了C#的DLL。然后,我们使用argtypes属性明确指定了GetSize函数的参数类型。接下来,我们定义了width和height变量作为传入参数,并使用ctypes.byref将这些变量的地址传递给函数。最后,我们使用value属性获取C#函数返回的结果。

    需要注意的是,我们在调用C#函数时传递字符串参数时需要使用b"PA"来表示一个字节字符串。

    希望这个解决方案对你有帮助!如果你需要进一步的帮助,请随时提问。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月31日