Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Qt Windows - behové knižnice z iného adresára

Zaradil som do kategórie softvér, hoci by sa to dalo obhájiť aj v kategórii programovanie. Možno by nebolo od veci dať možnosť multivýberu kategórii. Ale k veci:

Povedzme, že mám program v Qt (P1) a ten bude volať iný program v Qt v inom adresári (svoj "plugin", P2). P1 bude mať v adresári s EXE súborom aj všetky potrebné knižnice Qt potrebné pre jeho beh. P2 by ich mal mať tiež a takto narastie dĺžka programu zbytočne o myslím 20 MB. Dá sa nejako dosiahnuť, aby P2, ktorý je volaný z P1 využíval knižnice z adresára P1? Zamedzilo by sa tým duplikovaniu súborov.

Pýtam sa to v teoretickej rovine a uvítam aj nejaký "kód", ktorý by to umožnil. Reálne taký program napísaný nemám, ale v budúcnosti budem mať a preto sa pýtam dopredu ako to riešiť.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
co konkretne nazyvas slovom "behové knižnice"? Vseobecne je to vec programu, programator moze naprog…
MM.. 10.11.2011 18:58
MM..
Aby ti bežal program v Qt vo Windows, tak do rovnakého adresára, kde je aplikácia alebo do PATH treb… nový
msx. 10.11.2011 19:12
msx.
ked to neni dll ktoru volas/pouzivas ty sam (cez LoadLibrary apod), tak som ti napisal ze jako Aktu… nový
MM.. 10.11.2011 19:15
MM..
Predstav si túto situáciu: Program Arena (šachové GUI) spúšťa šachové motory, ktoré sú samostatnými… nový
msx. 10.11.2011 19:14
msx.
a tie sachove motory nemozu byt v stejnom adresari jak hlavna aplikacia? Preco nie? nový
MM.. 10.11.2011 19:15
MM..
Tam je to kvôli prehľadnosti v samostatnom adresári, pretože aj Arena má plno vlastných adresárov a… nový
msx. 10.11.2011 19:19
msx.
ved ti pisem jak to vyriesis. Pri spustani P2 mu nastavis pracovny adresar v ktorom su tie dll. Aleb… nový
MM.. 10.11.2011 19:22
MM..
Alebo studuj tu http://doc.qt.nokia.com/latest/deployment-windows. html moznosti je vela (od statica… nový
MM.. 10.11.2011 19:21
MM..
Ono v podstate stačia len tie hlavné dll, v staršom Qt Creatorovi bol aj krok pri vytváraní aplikáci… nový
msx. 10.11.2011 19:30
msx.
Statickým linkovaním myslíš pridanie DLL k samotnému EXE? To by bolo úplne ideálne.Hádam sa o tom v… poslední
msx. 10.11.2011 19:33
msx.

co konkretne nazyvas slovom "behové knižnice"?
Vseobecne je to vec programu, programator moze naprogramovat cokolvek, ak cita nejaku dll tak zadava nazov a moze zadat kludne aj ..\..\atd). Ked to nemas vo svojom programe ale skryte vo frameworku tak hlada sa najprv v aktualnom, potom v systemovych adresaroch. Aktualny adresar aplikacie sa da nastavit, mal by si si pozret tu funkciu ktorou spustas to P2, urcite sa tam bude dat nastavit aj pracovny adresar pre P2 priamo pri jej spustani.

Aby ti bežal program v Qt vo Windows, tak do rovnakého adresára, kde je aplikácia alebo do PATH treba dať súbory qt4core.dll, qt4....dll atď. Minimum sú myslím 2, ak sa používa databáza, tak pribudne tretí a tak. Problém je, že programátor nevie ovplyvniť chovanie programu, lebo bez tých knižníc sa programátorom naprogramovaný kód nespustí. Dokázala by to ovplyvniť len aplikácia, ktorá tú druhú spúšťa a to sa pýtam, že ako.

ked to neni dll ktoru volas/pouzivas ty sam (cez LoadLibrary apod), tak som ti napisal ze jako

Aktualny adresar aplikacie sa da nastavit, mal by si si pozret tu funkciu ktorou spustas to P2, urcite sa tam bude dat nastavit aj pracovny adresar pre P2 priamo pri jej spustani.

Tam je to kvôli prehľadnosti v samostatnom adresári, pretože aj Arena má plno vlastných adresárov a tak isto by som to aj ja potreboval mať pekne zvlášť.

To čo píšeš v poslednej vete vyššie o pracovnom adresári je dosť možné. Takže takto by to šlo obísť zrejme. Možno si skúsim niečo také na skúšku naprogramovať a uvidím ako sa to bude chovať.

Ale ideálne by bolo spraviť to tak ako je to vyriešené v linkeri Qt v IDE Qt Creator. Asi by som sa to mal skúsiť opýtať na fóre Qt.

Ono v podstate stačia len tie hlavné dll, v staršom Qt Creatorovi bol aj krok pri vytváraní aplikácie, kde sa fajkovalo, čo sa má použiť. Teraz je to tam nejako inak, ale tých dll je spolu tuším 8 a je to ľahké zistiť, čo treba, lebo bez nich sa to ani nespustí. Iné to nevyžaduje nič. Dokonca sa mi páči, že inštalácia Qt Creatora so všetkým, čo k nemu treba je prenositeľné. Akurát v nastaveniach treba potom nastaviť cestu ku kompilátoru a ide to.

Statickým linkovaním myslíš pridanie DLL k samotnému EXE? To by bolo úplne ideálne.Hádam sa o tom v tom linku dočítam. Lebo raz dávnejšie som niečo také hľadal a našiel som len informácie o tom, že ktoré DLL treba pridať k programu.

Doplnené: Takže je to vytvorenie DLL súborov bez čísla verzie, ale nejaký extra význam v tom nevidím, pretože, keby sa objavila staršia aplikácia, bude fungovať s tým "univerzálnym" DLL, keď je to verzia 4? To som tam zodpovedané nenašiel, ale nevadí.

Zpět do poradny Odpovědět na původní otázku Nahoru