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