Bau und Import einer aus Python generierten Programmbibliothek (DLL)
Verfasst: Freitag 11. März 2022, 08:59
Guten Tag in die Runde!
Mein Wunsch ist es, aus einem Python-Skript eine DLL zu bauen, um die in Python definierten Funktionen dort als Importe innerhalb eines C-Programms aufzurufen.
Ich stelle mir das Vorgehen wie folgt vor:
* Schreiben einer oder mehrerer *.py mit Funktionen, die exportiert werden sollen.
* "SomethingWonderfulHappens" *.py => *.DLL
* DLL => DLM
* Laden-/Entladen der DLM zur Laufzeit
* Aufruf aus Python nach C importierter Funktionen zur Laufzeit
Frage: Ist dies überhaupt möglich?
Ich habe mittlerweile so Einiges versucht, davon durch Cython und nuitka zu realisieren - doch leider nur mit mäßigem Erfolg.
Zwar generiert mir z.B. Cython ein C-File, das ich einbinden und auch in eine DLL übersetzen kann. Jedoch bindet die Funktion "LoadLibrary" diese nicht ein - vermutlich, da weitere Abhängigkeiten zu anderen DLLs nicht erfüllt sind. Letztlich benötige ich aber eine feine, kleine DLL/DLM ohne weiteren Overhead.
Falls also jemand diesbezüglich einen Weg wissen sollte, bin ich für jeden Hinweis dankbar!
Viele Grüße,
Thomas
Mein Wunsch ist es, aus einem Python-Skript eine DLL zu bauen, um die in Python definierten Funktionen dort als Importe innerhalb eines C-Programms aufzurufen.
Ich stelle mir das Vorgehen wie folgt vor:
* Schreiben einer oder mehrerer *.py mit Funktionen, die exportiert werden sollen.
* "SomethingWonderfulHappens" *.py => *.DLL
* DLL => DLM
* Laden-/Entladen der DLM zur Laufzeit
* Aufruf aus Python nach C importierter Funktionen zur Laufzeit
Frage: Ist dies überhaupt möglich?
Ich habe mittlerweile so Einiges versucht, davon durch Cython und nuitka zu realisieren - doch leider nur mit mäßigem Erfolg.
Zwar generiert mir z.B. Cython ein C-File, das ich einbinden und auch in eine DLL übersetzen kann. Jedoch bindet die Funktion "LoadLibrary" diese nicht ein - vermutlich, da weitere Abhängigkeiten zu anderen DLLs nicht erfüllt sind. Letztlich benötige ich aber eine feine, kleine DLL/DLM ohne weiteren Overhead.
Falls also jemand diesbezüglich einen Weg wissen sollte, bin ich für jeden Hinweis dankbar!
Viele Grüße,
Thomas