提问者:小点点

Pythonnet:无法访问dll类


我在用pythonnet加载用c#编写的Dll类时遇到问题

这是dll项目配置(VS)

这是课程代码

using System;

namespace ClassLibrary1
{
    public class Class1{   
        public void test()
        {
            Console.WriteLine("Hello from a library");
        }
    }
}

这是DLL的信息

剧本呢

import clr
clr.AddReference('ClassLibraryAss')
from ClassLibraryAss import Class1
x = Class1()
x.test()

能够找到程序集。我举了一些例子,没有比这更难的了。

这是输出

Traceback (most recent call last):
  File ".\testDLL.py", line 23, in <module>
    from ClassLibraryAss import Class1
ModuleNotFoundError: No module named 'ClassLibraryAss'

我尝试了不同的方法来加载模块,但没有成功

  • Pythonnet版本:2.5。2(也尝试了2.5.1)
  • Python版本:3.8。0
  • 操作系统:Windows 10
  • Visual studio 2019(我没有尝试其他)

共2个答案

匿名用户

在您的from XXX import Class1XXX中,应该是Class1所在的命名空间,而不是DLL名称

匿名用户

原来dll是在中创建的。默认情况下,NetCore和pythonnet不能与之配合使用。

根据这个问题,

因此,使用。net框架工作。在这期文章中,我提到了一种使用NetCore DLL运行的方法,但我没有尝试过

import clr
#I made a dll with .net Framework 4.8 called ClassLibraryNetF 
from ClassLibraryNetF import Class1

x = Class1()
x.test()