Column Posted November 28, 2015 Report Posted November 28, 2015 De curand am vrut sa-mi creez propriul program care sa functioneze pe mai multe sisteme de operare gen: Windows, Linux, etc. Mi-am facut un fisier DLL ce am inclus bibliotecile python-ului, deoarece vreau sa-l folosesc la o alta aplicatie impreuna cu C++. Dupa ce am creat fisierul si l-am facut "static" adica sa-si includa el toate fisierele pentru a putea functiona pe mai multe sisteme de operare, nu a mers. Eu am windows 8 si l-am incercat dupa ce am instalat iarasi windows-ul, am vazut ca nu mai mergea sa-l apelez.. Vreau sa-mi spuneti cum pot sa-l fac static adica sa functioneze pe toate sistemele de operare fara sa mai instalez eu anumite programe si fara sa mai poarte el alte fisiere pe care la randul lui le va apela pentru a putea functiona. Dupa cum am spus si in titlu, folosesc CodeBlocks. Va rog tare mult sa ma ajutati, multumesc!PS: Sa nu razi niciodata de un nepriceput pentru ca si tu vei fi in aceeasi ipostaza mai tarziu! Quote
Active Members MrGrj Posted November 28, 2015 Active Members Report Posted November 28, 2015 Dac? ai creat un DLL nu înseamn? c? va functiona pe toate sistemele de operare. Nu prea am inteles ce ai f?cut tu acolo. Poti pune ceva cod ? Quote
watsonAI Posted November 28, 2015 Report Posted November 28, 2015 Salut, pentru a face ceea ce vrei tu, trebuie sa compilezi proiectul respectiv pe platformele pe care doresti sa functioneze. Exemplu, pentru windows, compilezi pe windows, si ar trebui sa mearga pe majoritatea versiunilor de windows de la xp incoace, daca nu are alte dependinte, vrei sa ruleze pe linux, intri acolo, si il compilezi si acolo. Cand vrei aplicatia pe linux, o trimiti compilata pe linux cu libraria de linux, cand vrei aplicatia pe windows o trimiti pe cea compilata pe windows cu libraria de windows. Quote
S.L.C Posted November 28, 2015 Report Posted November 28, 2015 Daca folosesti CodeBlocks atunci cred ca folosesti si MinGW. Si trebuie sa scapi de DLL-urile incluse de MinGW.Dar daca intentia ta este sa incluzi python in mod static in programul tau pe windows folosing MinGW atunci imi pare rau sa te informez ca nu este chiar atat de usor.Pe pagina de download pentru Python 3.5.0 ai o optiune "Windows x86 embeddable zip file". Creata specific pentru situatiile in care programul tau trebuie sa fie distribuit impreuna python. (atentie: versiunuea 3.5.0 a renuntat la suportul pentru XP!)Tu ca developer downloadezi instalatia completa deoarece in folderul unde ai este instalat Python vei gasii "include" pentru header-urile necesare comunicarii cu Python si "libs" unde gasesti librariile "python.lib", "python35.lib" de care programul tau depinde.Dupa distribuire programul tau depinde de "python##.dll" si orice utilizator ce doreste sa foloseasca programul tau este obligat sa instaleze versiunea de Python cu care programul tau a fost compilat.Pentru asta a fost creata optiunea "Windows x86 embeddable zip file" pe pagina de downloadare. Pentru a fii încorporat de tine in distribuia programului ta. Fara a fii necesara o instalatie completa a versiunii specifice de Python pe calculatorul utilizatorului.Oricum, asta este doar pentru Windows. Daca incluzi Linux si MacOS atunci distributia ta devine mult mai complicata.Te sfatuiesc sa renunti la idea de a obtine un executabil amalgamat. Deoarece nu faci decat sa complici lucrurile.Nu stiu daca ai instalat programul HexChat vreodata. Dar are un plugin de scripting pentru Python. Ideea lor a fost ca in timpul instalarii sa downloadeze si sa instaleze si versiunea de Python de care programul lor are nevoie. Asta daca nu o ai tu deja.Sublime Text este in editor foarte popular ce include Python ca limbaj de scripting. Metoda lor a fost sa includa versiunea încorporabila impreuna cu programul pentru a nu forta utilizatorul sa instaleze diferite versiuni de Python.Indiferent de metoda alesa iti garantez ca o distributie multi-platform este destul de greu de mentinut. Totul depinde de cine vrei sa se chinuie mai putin. Tu ca developer sa utilizatorul. Quote
Column Posted November 28, 2015 Author Report Posted November 28, 2015 S.L.C., eu incerc sa creez un DLL care sa fie simplu, adica sa nu contina eu stiu alte dll-uri care sa le apeleze gen: pythonlib.dll sau ceva de genul ci singur(vreau sa mentionez faptul ca aplicatia in executabil contine python si ca urmare eu doresc sa apelez dll-ul meu cu extensia .pyd. Mi-ai mai raspuns la asta si sfatul tau mi-a fost de mare ajutor insa cand l-am testat pe windows xp nu mi-a mers sa-l apelez. Am inteles ca trebuie sa folosesc ceva de genul "DLL Recursiv" care sa apeleze dll-ul din memorie.. asta nu prea am inteles. Quote
S.L.C Posted November 28, 2015 Report Posted November 28, 2015 ... l-am testat pe windows xp nu mi-a mers sa-l apelez...Ah, nici nu am observat ca este aceeasi persoana Daca folosesti Python 3.5.0+ atunci sa stii ca nu mai suporta XP.Cat despre situatia ta sunt putin confuz. Nu prea inteleg scopul. Adica ce intentionezi sa faci. Inteleg ce nu vrei ca programul tau sa depinda de anumite DLL-uri. Dar nu inteleg care este scopul programului tau si ce rol are Python.Ca urmare nu pot face anumite sugestii. E ca si cum mi-ai spune "Vreau sa plec dar spune-mi o scurtatura." Fara a stii unde vrei sa ajungi nu pot recomanda nimic. Sper ca intelegi ce vreau sa spun. Quote