Diskuze: exe súbor komplet
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.

Tvůrce

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí C++, jsme si ověřili nabyté zkušenosti z kurzu.
Tuším že ten soubor patří do C:\windows\system32, pokud ho tam nemáš, tak ho někde stáhni a zkopíruj ho tam. Pokud to ani pak nepůjde, tak ho hoď do složky kde máš exe soubor. Pokud patří do složky s exe, tak ho tam můžeš nechat a přenášet ten program s ním. Pokud do system32, pak je dobré napsat nějaký jednoduchý program, který pouze ten soubor do té složky zkopíruje. Pokud tohle nepůjde, pak zkus někde vygooglit, kam ten soubor patří. Je také možné, že těch souborů bude chybět víc. Tuším že tyhle soubory jsou součástí néjakého VS redistu, pak buď můžeš ty soubory postahovat postupně, nebo sehnat ten redist.
OK, skúsim večer doma a napíšem výsledok.
A ten spôsob, aby všetko bolo v jednom exe súbore, nepoznáš?
Zatiaľ som to vyskúšal len na synovom PC (rovnaký OS), ide to tak, že
som MSVCR100D.dll nakopíroval do zložky s exe súborom.
Som zvedavý, či to pôjde aj u mňa v práci (starší OS) a nejaké
obmedzenia.
Funguje to výborne aj na nižšom OS v práci.
Teda výstup z tohto vlákna:
Program napísaný v MS Visual C++ a OpenGl s použitím obrázku.bmp ako
textúry v programe je prenositeľný medzi PC s OS Windows za nasledovných
podmienok:
Vytvoriť zložku, do nej nakopírovať spúšťací (exe) súbor, ďalej
obrázok.bmp, (ak je v kóde zadaná cesta, tak aj s cestou, napr.
Data/obrázok.bmp) nakoniec tam treba nakopírovať dynamickú knižnicu
MSVCR100D.dll.
V PC, v ktorom bol napísaný program je knižnica umiestnená:
C:\Windows\system32\MSVCR100D.dll
Mimochodom, ak by niekoho zaujímalo ako to vyzerá v praxi, nech sa
páči:
http://skolka-jazyka-c.freespace.sk/viewforum.php?f=60
V 6. až 9. lekcii sú priložené zazipované zložky, ktoré sa dajú
otestovať.
Možná by bylo lepší ty soubory kopírovat do toho system32, než do složky kde je exe, ale asi je to celkem jedno.
Ide mi o to, aby si ten, kto si to stiahne, nemusel do systému nič
kopírovať, mnohých by to mohlo odradiť. Preto to dám radšej do zložky.
Navyše, kto tomu trošku rozumie, pochopí a dá si to tam sám.
MSVCR100D.dll jestli se nepletu, tak to D na konci znamena, ze je to debug, nebylo by lepsi to sestavit pod release nastavenim? navic vysledne exe soubory mivaji i mensi velikost. Jestli tu pisu blbosti, tak mě omluvte. Už jsem to neviděl asi 3 roky a moc si to nepamatuji.
Ako mám rozumieť tomuto?
"sestavit pod release nastavenim"
Je nejaký tutoriál, máš odkaz?
Ahoj,
D na konci názvu knihovny (před příponou) znamená Debug, tzn. knihovnu používají programy zkompilované v režimu pro ladění. To znamená, že kompilátor při jejich překladu neprovádí prakticky žádné optimalizace. Navíc se do výsledného kódu dostane řada různých assertů a jiných kontrol, takže výsledný program běží pomaleji, než by měl.
Lze také nastavit, aby se potřebné CRT knihovny linkovaly k programu
staticky, tedy aby se jejich obsah stal přímo součástí výsledného .exe
souboru. V nastavení projektu se to nachází na stránce C/C++ / Code
Generation v řádku Runtime Library. V něm si
určujete, jakou běhovou knihovnu má program použít. Možnosti jsou
následující:
Multi-threaded – statické linkování v režimu Release
Multi-threaded Debug – statické linkování, režim
ladění
Multi-threaded DLL – dynamické linkování, režim
Release
Multi-threaded Debug DLL – dynamické linkování, režim
laděni
Při dynamickém linkování je třeba příslušnou DLL knihovnu přenášet spolu s programem (nebo nainstalovat příslušnou verzi Visual C++ Redistributable). A kopírovat do systémového adresáře nemusí být zrovna super, když nemáte administrátorská práva. Při statickém linkování nemusíte s programem nosit žádnou knihovnu. Výsledné .exe soubor je pak samozřejmě o dost větší, ale v tom bych v dnešní době neviděl takový problém.
Zobrazeno 12 zpráv z 12.