Zdravim,<br><br>snazim se uz par dni rozchodit binding mezi jednou Win aplikaci a Pythonem. Aplikace podporuje system pluginu na zaklade DLL knihoven (nacita DLL knihovny a ocekava funkce s urcitymi jmeny).<br><br>Vymyslel jsem dva postupy, ale ani u jednoho jsem nebyl dostatecne uspesny:<br>
a) Puvodni zamer byl udelat v Ccku skeleton DLL knihovny a v ni pomoci elmeru (<a href="http://elmer.sourceforge.net/">http://elmer.sourceforge.net/</a>) zapouzdrit python kod. To temer fungovalo. Povedlo se mi zkompilovat Cckovy kod do DLL a zavolat ho jako plugin, stejne tak se mi povedlo rozchodit Elmer tak, ze mi (pod Linuxem) generoval adekvatni Cckovy kod, ktery by slo pouzit v te DLL kostre. Narazil jsem ale na problem, ze nevim, jak zkompilovat kod Elmeru pod Windows, protoze Elmer je podporovany jen na Linuxovych kompilatorech :-). Kdybyste nekdo vedel...<br>
<br>b) Druhy postup predpoklada, ze jsem schopny pomoci py2exe vytvorit DLL knihovnu primo z cisteho python kodu. I zde jsem byl uspesny a povedlo se mi zkompilovat DLL knihovnu. Kdyz se ale podivam na exporty, ktere ta knihovna ma, vidim tam pouze zakladni DllRegisterServer, DllGetClassObject a dalsi, ktere ma kazdy COM DLL. Hloubam tady nad tim uz kolik hodin, Google moc nepomohl (asi to moc lidi nepotrebuje) a nevim, jak tam dostat sve vlasni exporty. Zajimave je, ze uvnitr kodu te DLL knihovny existuje retezec "Vysledek", takze to ten skript my_com_server.py (viz. priloha) s funkcemi obsahuje.<br>
<br>Jelikoz predpokladam, ze v bode b) najdu vice lidi, kteri s tim maji nejakou zkusenost, prikladam ukazkovy setup.py, ktery mi generuje DLL kod (a ve kterem je zrejme neco spatne).<br><br>Pozn: Priznam se, ze z py2exe nejsem moc moudry. Predpokladal jsem, ze class Target je prave ona class, jejiz funkce jsou exportovany v DLLku (proto jsem tam vytvoril nejake funkce). Pak me ale zmatlo, ze py2exe vyzadoval existenci nejakeho modulu, tak jsem vytvoril jeste my_com_server.py, ktery opet obsahuje jakousi prazdnou tridu s par funkcemi...<br>
<br>Diky za jakoukoliv radu,<br>Marek<br><br><br>