Re: Přístup k C++ DLL z Pythonu

Jindroush jindroush na seznam.cz
Pátek Červen 2 17:29:19 CEST 2023


Obecne sdilet c++ veci z dll nelze (*). V ramci jednoho C++ 
projektu/jednoho kompilatoru ano.

Reseni je vesmes to zabalit do C API a pripadne objekty si posilat jako 
nejake void pointery zpet do dll a az tam provadet volani metod.

*nelze = slozite, komplikovane, problematicke atd.
J.

On 02.06.2023 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


-- 
Jindroush <jindroush na seznam.cz>



Další informace o konferenci Hw-list