我需要在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
请,任何帮助都会有用。
答案 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程序集。 我建议使用IronPython或Python .NET