如何使用Python脚本中的C#DLL?

时间:2014-08-14 06:59:19

标签: c# python

我需要在C#编写的dll中使用Python(32)中的函数。 我使用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

请,任何帮助都会有用。

3 个答案:

答案 0 :(得分:1)

我猜你使用的库不是Com Visible。您可以通过设置属性使其变为可见:

[ComVisible(true)]

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

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

答案 1 :(得分:0)

C#-DLL不是本机可执行文件,但需要.NET-Runtime库。因此,您不能将它们与本机Python可执行文件一起使用。你必须切换到IronPython,它是C#中的python实现。

答案 2 :(得分:0)

您无法使用ctypes访问.NET程序集。 我建议使用IronPythonPython .NET