Python有类似于.net c#PInvoke的东西吗?

时间:2011-03-17 11:14:33

标签: python pinvoke

CPython有类似.net c#PInvoke吗?

例如我有some.dll或some.so,并希望在运行时注册一些函数并开始在我的程序中使用它们。

在C#中你可以这样做:

// Marshal.cs
using System;
using System.Runtime.InteropServices;

namespace CSharpIterators
{
    class MainClass
    {
        [DllImport("msvcrt.dll")]
        public static extern int puts([MarshalAs(UnmanagedType.LPStr)] string m);

        [DllImport("msvcrt.dll")]
        internal static extern int _flushall();

        public static void Main (string[] args)
        {

            puts("Hello World!");
            _flushall();
        }
    }
}

python有类似的功能吗?

提前致谢!

2 个答案:

答案 0 :(得分:6)

您可以使用Python ctypes module来调用DLL中的函数。

答案 1 :(得分:0)

另一种选择是使用swig之类的工具来创建C / C ++代码的Python接口: http://www.swig.org/

创建包装器的语法与C加上一些预处理指令非常相似。