如何使用ctypes从C#dll访问方法?

如何使用ctypes从C#dll访问方法?,c#,python,.net,dll,python.net,C#,Python,.net,Dll,Python.net,我在这里有点不知所措,以前从未使用过dll,所以希望我的问题有意义 我正在尝试使用一个C#dll,其中包含一系列不同的类。我在这里阅读了其他显示示例代码的问题,例如: import ctypes lib = ctypes.cdll.LoadLibary('pathToDLL') lib.foo() 我很理解。如果有意义的话,我还没有弄清楚如何使用dll中类中的方法。因此,如果dll包含一个名为“Foo”的类和一个方法“bar”,那么如何使用ctypes调用bar?另外,ctypes是尝试访问此

我在这里有点不知所措,以前从未使用过dll,所以希望我的问题有意义

我正在尝试使用一个C#dll,其中包含一系列不同的类。我在这里阅读了其他显示示例代码的问题,例如:

import ctypes
lib = ctypes.cdll.LoadLibary('pathToDLL')
lib.foo()

我很理解。如果有意义的话,我还没有弄清楚如何使用dll中类中的方法。因此,如果dll包含一个名为“Foo”的类和一个方法“bar”,那么如何使用ctypes调用bar?另外,ctypes是尝试访问此dll的最佳方式还是我应该使用其他方式?

您应该使用pythonnet模块来实现此目的。 下面是它在windows上的工作方式

  • 安装:
    pip安装pythonnet
  • 用法:
  • e、 g


    我相信,由于您想要使用C#(.NET)dll,您将无法像使用常规dll那样使用ctypes。我可以帮你,太好了。让我知道你是否能在MAC上工作。由于pythonnet没有为我安装在mac上。@Nitin_k29 for mac请遵循以下说明:
    # dll name  = mydll.dll
    # namespace = mynamespace
    # class     = Foo
    # method    = bar
    
    import clr
     # provide name without .dll and make sure either to 
     # copy the dll in pythonpath e.g. (c:\\python27) or add the path in 
     # sys.path
    clr.AddReference("mydll")
    import mynamespace
    obj = mynamespace.Foo()
    obj.bar()