如何从Python脚本中使用c# DLL ?

本文关键字:DLL Python 脚本 | 更新日期: 2023-09-27 18:17:52

我需要使用Python(32)中的函数,从c#编写的dll。我使用ctypes,但我得到了错误信息:"找不到z函数"。我需要的函数的名称是'z'和lib名称是"ledscrcons.dll"。我已经从另一个应用程序(c#)检查了它,这个库工作得很好,但python没有看到它。我不知道是什么问题?下面是PScript的代码:

import sys
import string
from time import gmtime, strftime
from array import *
from ctypes import  *
import ctypes
import clr
def SendStr(s, port):
    mydll = clr.AddReference('ledscrcons.dll')
    from ledscrcons import Class1
    send = mydll.z
    mydll.z.argtypes = [ctypes.c_char_p, ctypes.c_int]
    mydll.z.restype  = c_int
    st = s.encode('cp1251')
    i=2
    count = 0
    critcnt = 1
    while i!=0 and count<critcnt:
        i=send(c_char_p(st), c_int(port))
        if i==2 :
            print(str(i) + "dd")
        if i==1 :
            print(str(i) + 'dd')
        if i==0 :
            print('t')
        count = count + 1
        if count==critcnt:
            if i==1:
                print('kk')
            if i==2:
                print('uu')
    return i

如何从Python脚本中使用c# DLL ?

我猜你使用的库不是Com可见的。你可以通过设置attribute:

来使其Com可见。
[ComVisible(true)]

你也可以尝试IronPython,它是Python的。net实现。在IronPython中,只需执行

import clr
clr.AddReference('YourAssemblyName')
from YourNameSpace import YourClassName

c# - dll不是本地可执行文件,但需要。net runtime库。因此,您不能将它们用于本地Python可执行文件。你必须切换到IronPython,这是c#中的python实现。

不能使用ctypes访问. net程序集。我建议使用IronPython或Python .NET