4

我在加载 DLL 文件并在 Python 中调用函数时遇到问题。我已经尝试了很多教程,但仍然无法弄清楚它是如何工作的。这是我要导出为 DLL 文件的类。我使用简单的 C# 代码。

namespace DemoClassLib
{
    public class cLib
    {
        public int increment(int x)
        {
            return x + 1;
        }
    }
}

构建 C# 代码后,我得到名为“DemoClassLib.dll”的 DLL 文件。我使用 ctypes 加载 DLL 文件。直到现在一切都很好。

from ctypes import *
myDll = WinDLL('D:\\Resources\\DemoClassLib\\bin\\Debug\\DemoClassLib.dll')

从那一刻开始,我无法继续。我尝试过的所有命令都失败了。

n = c_int(1)
myDll.increment(n)

它不断向我显示错误。如何在 Python 中调用方法“increment()”?以及如何传递输入并从中检索输出?我对 Python 很陌生。有人能帮助我吗?如果您能给我提供源代码教程,我将不胜感激。

4

1 回答 1

2

您不能使用 ctypes 执行此操作,因为二进制文件中没有简单地称为“增量”的符号,因为您的增量方法是类的成员。即使这是 C++,名称也会被破坏。但是使用 C#,您甚至不会在符号表中得到一个错误的名称,因为代码是由 .NET 框架解释的。

如果您出于某种原因必须与 C# 库交互,您可能需要考虑尝试 IronPython (http://ironpython.net/),它是在 .NET 框架上运行的 Python,具有对 CLR 的完全访问权限。上面建议公开 COM 接口的评论也可以工作。

于 2012-11-05T16:38:28.870 回答