Re: Přístup k C++ DLL z Pythonu
Miroslav Mraz
mrazik na volny.cz
Pátek Červen 2 17:36:12 CEST 2023
Moc nepomůžu, ctypes nepoužívám, protože podle zběžné prohlídky
dokumentace mi to připadalo moc okenní. CFFI mi připadá lepší, ale zase
interface pro C++ je problematické. Většinou jde C++ třída a její
funkcionalita nějak zabalit do prosté C-čkové funkce. Napište co od toho
kódu v pythonu očekáváte, ale přístup k jednotlivým metodám třídy a ke
třídě samotné bych od toho neočekával. Ono to ani nebývá potřeba, v
pythonu potřebujete většinou opracovat nějak rychle (tedy v C-čku)
nějaký balík dat a na to funkce stačí. Což půjde asi i v tom ctypes.
Mrazík
On 02. 06. 23 16:40, Pavel Hudeček wrote:
> Dobrý den všem,
>
> když udělám DLL s C stylem, kde je extern "C" __declspec(dllexport) jde
> pak použít v Pythonu přes knihovnu ctypes.
>
> Kdybych ale chtěl C++ styl, tedy export __declspec(dllexport), kde je
> pak class s konstruktorem, co mám udělat?
>
> Když mám testovací DLL, kde v main.h je:
>
> //#define TESTCPP
>
> #ifdef TESTCPP // nefunguje s ctypes
> #ifdef POKUSDLLPY_EXPORTS
> #define DLLe __declspec(dllexport)
> #else
> #define DLLe __declspec(dllimport)
> #endif
> #else // #ifdef TESTCPP // funguje s ctypes
> #ifdef POKUSDLLPY_EXPORTS
> #define DLLe extern "C" __declspec(dllexport)
> #else
> #define DLLe extern "C" __declspec(dllimport)
> #endif
> #endif // #ifdef TESTCPP
>
> #ifdef TESTCPP
> // This class is exported from the dll
> class DLLe pokusDllPy {
> public:
> pokusDllPy(void);
> // TODO: add your methods here.
> };
> #endif // #ifdef TESTCPP
>
> DLLe int r123(void);
> DLLe int add(int a, int b);
> DLLe int rABC(char* text);
> DLLe int ver(char* text);
>
> tak při vyplém TESTCPP funguje při použití přes ctypes a funguje při
> volání z EXE programu.
> Když TESTCPP zapnu, z EXE funguje taky, ale přes ctypes ne.
>
> Díky,
> PH
> _______________________________________________
> HW-list mailing list - sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list
Další informace o konferenci Hw-list