


Schritt für Schritt zum Schreiben einer Python-Erweiterung in C-Sprache
In diesem Artikel wird erläutert, wie Sie Python mit der C-Sprache erweitern. Das angegebene Beispiel besteht darin, Python eine Funktion hinzuzufügen, um eine Zeichenfolge in der Windows-Zwischenablage festzulegen. Die Umgebung, die ich beim Schreiben des folgenden Codes verwendet habe, ist: Windows XP, gcc.exe 4.7.2, Python 3.2.3.
Der erste Schritt besteht darin, die C-Sprach-DLL zu schreiben
Erstellen Sie eine Clip.c-Datei mit folgendem Inhalt:
// 设置 UNICODE 库,这样的话才可以正确复制宽字符集 #define UNICODE #include <windows.h> #include <python.h> // 设置文本到剪切板(Clipboard) static PyObject *setclip(PyObject *self, PyObject *args) { LPTSTR lptstrCopy; HGLOBAL hglbCopy; Py_UNICODE *content; int len = 0; // 将 python 的 UNICODE 字符串及长度传入 if (!PyArg_ParseTuple(args, "u#", &content, &len)) return NULL; Py_INCREF(Py_None); if (!OpenClipboard(NULL)) return Py_None; EmptyClipboard(); hglbCopy = GlobalAlloc(GMEM_MOVEABLE, (len+1) * sizeof(Py_UNICODE)); if (hglbCopy == NULL) { CloseClipboard(); return Py_None; } lptstrCopy = GlobalLock(hglbCopy); memcpy(lptstrCopy, content, len * sizeof(Py_UNICODE)); lptstrCopy[len] = (Py_UNICODE) 0; GlobalUnlock(hglbCopy); SetClipboardData(CF_UNICODETEXT, hglbCopy); CloseClipboard(); return Py_None; } // 定义导出给 python 的方法 static PyMethodDef ClipMethods[] = { {"setclip", setclip, METH_VARARGS, "Set string to clip."}, {NULL, NULL, 0, NULL} }; // 定义 python 的 model static struct PyModuleDef clipmodule = { PyModuleDef_HEAD_INIT, "clip", NULL, -1, ClipMethods }; // 初始化 python model PyMODINIT_FUNC PyInit_clip(void) { return PyModule_Create(&clipmodule); }
Der zweite Schritt besteht darin, die Python zu schreiben setup.py
Erstellen Sie eine setup.py-Datei mit folgendem Inhalt:
from distutils.core import setup, Extension module1 = Extension('clip', sources = ['clip.c']) setup (name = 'clip', version = '1.0', description = 'This is a clip package', ext_modules = [module1])
Der dritte Schritt besteht darin, mit Python zu kompilieren
Führen Sie den folgenden Befehl aus:
python setup.py build --compiler=mingw32 install
löst in meiner Umgebung den folgenden Fehler aus:
gcc: error: unrecognized command line option '-mno-cygwin'
Fehler: Befehl 'gcc' fehlgeschlagen mit Exit-Status 1
Öffnen Sie die Datei %PYTHON-Installationsverzeichnis%/Lib/distutils/cygwinccompiler.py, löschen Sie -mno-cygwin darin und dann Führen Sie es erneut aus.
Nach dem normalen Betrieb wird eine Datei „clip.pyd“ generiert und in das Verzeichnis %PYTHON-Installationsverzeichnis%/Lib/site-packages
< kopiert 🎜>
# -*- encoding: gbk -*- import clip clip.setclip("Hello python")

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen





Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Wie lehre ich innerhalb von 10 Stunden die Grundlagen für Computer -Anfänger für Programmierungen? Wenn Sie nur 10 Stunden Zeit haben, um Computer -Anfänger zu unterrichten, was Sie mit Programmierkenntnissen unterrichten möchten, was würden Sie dann beibringen ...

Wie kann man nicht erkannt werden, wenn Sie Fiddlereverywhere für Man-in-the-Middle-Lesungen verwenden, wenn Sie FiddLereverywhere verwenden ...

Bei der Verwendung von Pythons Pandas -Bibliothek ist das Kopieren von ganzen Spalten zwischen zwei Datenrahmen mit unterschiedlichen Strukturen ein häufiges Problem. Angenommen, wir haben zwei Daten ...

Wie hört Uvicorn kontinuierlich auf HTTP -Anfragen an? Uvicorn ist ein leichter Webserver, der auf ASGI basiert. Eine seiner Kernfunktionen ist es, auf HTTP -Anfragen zu hören und weiterzumachen ...

Wie erstellt in Python ein Objekt dynamisch über eine Zeichenfolge und ruft seine Methoden auf? Dies ist eine häufige Programmieranforderung, insbesondere wenn sie konfiguriert oder ausgeführt werden muss ...

Verwenden Sie Python im Linux -Terminal ...

Verständnis der Anti-Crawling-Strategie von Investing.com Viele Menschen versuchen oft, Nachrichten von Investing.com (https://cn.investing.com/news/latest-news) zu kriechen ...
