Есть ли в Python что-то похожее на .net c # PInvoke? - PullRequest
2 голосов
/ 17 марта 2011

Есть ли в 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 ]

6 голосов
/ 17 марта 2011

Вы можете вызывать функции из DLL, используя ctypes модуль Python .

0 голосов
/ 17 марта 2011

Другой вариант - использовать такие инструменты, как swig, чтобы создать интерфейс Python для кода C / C ++: http://www.swig.org/

Синтаксис для создания оболочек очень похож на C плюс некоторые директивы предварительной обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...