Avatar
Libor Šimo (libcosenior):

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
Odpovídá na Libor Šimo (libcosenior)
Lukáš Hruda (Luckin):

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 (Luckin)
Libor Šimo (libcosenior):

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):

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):

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):

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
Odpovídá na Libor Šimo (libcosenior)
Lukáš Hruda (Luckin):

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 (Luckin)
Libor Šimo (libcosenior):

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
Posix
Člen
Avatar
Posix:

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
Proč to dělat jednoduše, když to jde složitě.
Avatar
Odpovídá na Posix
Libor Šimo (libcosenior):

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
Posix
Člen
Avatar
Posix:

ehm...

Nahoru Odpovědět 11.4.2013 17:30
Proč to dělat jednoduše, když to jde složitě.
Avatar
Martin Dráb
Redaktor
Avatar
Martin Dráb:

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.