IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.
Avatar
Libor Šimo (libcosenior):3.4.2013 10:54

Popis problému:
V MS Visual C++ a OpenGl napíšem grafický program, ktorý začína kódom:

// Vložení knihoven
#pragma comment (lib,"opengl32.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"glaux.lib") // tu je už potrebná

#include <stdio.h>// Hlavičkový soubor pro standardní vstup/výstup
#include <windows.h>// Hlavičkový soubor pro Windows
#include <gl\gl.h>// Hlavičkový soubor pro OpenGL32 knihovnu
#include <gl\glu.h>// Hlavičkový soubor pro Glu32 knihovnu
#include <gl\glaux.h>// Hlavičkový soubor pro Glaux knihovnu
...
... TextureImage[0]=LoadBMP("Data/Star.bmp")// cesta k obrázku
...

a využíva na zobrazenie tektúry nejaký bmp obrázok.
Keď do jednej zložky dám vytvorený exe súbor a zložku Data s bmp obrázkom, na mojom PC, kde som program napísal a skompiloval, to spustí a pracuje ako má.
Keď uvedenú zložku prekopírujem do iného PC s rovnakým OS, tak po spustení vypíše:
"Nepodarilo sa spustiť túto aplikáciu, pretože sa nenašlo MSVCR100D.dll..."

Dokáže mi niekto poradiť čo všetko treba dať do zložky s exe súborom, aby sa dal spustit aj na PC, kde nebol vytvorený?
Najlepšie by bolo, keby všetko potrebné bolo obsahom toho exe súboru, to by ani zložka nemusela byť.
Vopred ďakujem.

Odpovědět
3.4.2013 10:54
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Lukáš Hruda:3.4.2013 13:52

Tuším že ten soubor patří do C:\windows\sys­tem32, 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.

 
Nahoru Odpovědět
3.4.2013 13:52
Avatar
Odpovídá na Lukáš Hruda
Libor Šimo (libcosenior):3.4.2013 14:32

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áš?

Nahoru Odpovědět
3.4.2013 14:32
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):3.4.2013 19:30

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.

Nahoru Odpovědět
3.4.2013 19:30
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):4.4.2013 8:31

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\sys­tem32\MSVCR100D­.dll

Editováno 4.4.2013 8:34
Nahoru Odpovědět
4.4.2013 8:31
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Odpovídá na Libor Šimo (libcosenior)
Libor Šimo (libcosenior):4.4.2013 8:55

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ť.

Editováno 4.4.2013 8:55
Nahoru Odpovědět
4.4.2013 8:55
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Lukáš Hruda
Tvůrce
Avatar
Odpovídá na Libor Šimo (libcosenior)
Lukáš Hruda:4.4.2013 14:26

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.

 
Nahoru Odpovědět
4.4.2013 14:26
Avatar
Odpovídá na Lukáš Hruda
Libor Šimo (libcosenior):4.4.2013 17:40

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. :D

Editováno 4.4.2013 17:42
Nahoru Odpovědět
4.4.2013 17:40
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Neaktivní uživatel:7.4.2013 12:50

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.

Nahoru Odpovědět
7.4.2013 12:50
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Libor Šimo (libcosenior):11.4.2013 13:49

Ako mám rozumieť tomuto?
"sestavit pod release nastavenim"
Je nejaký tutoriál, máš odkaz?

Nahoru Odpovědět
11.4.2013 13:49
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Neaktivní uživatel:11.4.2013 17:30

ehm...

Nahoru Odpovědět
11.4.2013 17:30
Neaktivní uživatelský účet
Avatar
Martin Dráb
Tvůrce
Avatar
Martin Dráb:24.4.2013 9:30

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.

Nahoru Odpovědět
24.4.2013 9:30
2 + 2 = 5 for extremely large values of 2
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 12 zpráv z 12.