Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  Binaari käivitamine: ikoon vs käsurida. märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
asjameez
Kreisi kasutaja
asjameez

liitunud: 10.12.2006




sõnum 15.03.2011 19:26:15 Binaari käivitamine: ikoon vs käsurida. vasta tsitaadiga

Tere,

Mul on kirjutatud mõned C++/OpenGL demo programmid, mis töötavad käsurealt käivitades nii nagu peab.
Probleem tekib aga siis kui avada programm ikoonil klikkides. Programm ei leia üles alamkaustadesse pandud asju (mudelid, tekstuurid, shaderid jne).
Mismoodi saaks teha nii, et ikoonil klikkides leiaks samamoodi asjad üles?

Keeleks C++ ja platvorm hetkel Linux.

Tänud ette!
Kommentaarid: 63 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 15.03.2011 20:05:47 vasta tsitaadiga

asjameez, kui tegu shortcutiga, siis jälgi et application directory oleks korrektselt seadistatud.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
asjameez
Kreisi kasutaja
asjameez

liitunud: 10.12.2006




sõnum 16.03.2011 03:22:11 vasta tsitaadiga

Tegu ei ole shortcutiga. Käsurealt käivitades pead asuma samas kaustas kus binaar asub. Vastasel juhul ei leia programm teisi faile üles. Üles ei leita ka graafiliselt programmi avades.

Küsimus on, et kuidas C++ koodis niimoodi seada, et ükskõik kuidas seda käivitad, siis programm ise määrab oma asukoha juurikaks vms, et leiaks üles failid mis asuvad temaga samas kaustas või alamkaustades.

Näiteks tekstuuri laen ma nii:
Texture *t = new Texture("Data/Textures/Wood.jpg");

Proovitud on ka nii:
Texture *t = new Texture("./Data/Textures/Wood.jpg");
Kommentaarid: 63 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum
mikk36
HV Guru
mikk36

liitunud: 21.02.2004




sõnum 16.03.2011 10:26:03 vasta tsitaadiga

http://msdn.microsoft.com/en-us/library/sf98bd4y%28v=VS.100%29.aspx
Kontrolli kas working directory on õige.
Kommentaarid: 85 loe/lisa Kasutajad arvavad:  :: 0 :: 2 :: 78
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ohohh
Kreisi kasutaja
Ohohh

liitunud: 13.09.2003




sõnum 16.03.2011 12:12:25 vasta tsitaadiga

Ma võin nüüd veidi mööda panna, aga kas c main funktsiooni parameetrite esimene parameeter ei olnud programmi enda nimi? Ja kui käivitatud on muust kaustast koos teega failini, siis see on seal samuti olemas.

Võiks lihtsalt proovida, mis parameetrid kaasa tulevad, kui binary hiireklikist käivitad. Võibolla tuleb absoluutne path.
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
asjameez
Kreisi kasutaja
asjameez

liitunud: 10.12.2006




sõnum 16.03.2011 20:51:17 vasta tsitaadiga

GLchar wd[1024];
getcwd(wd, 1024);
cout << wd << endl;

Väljastab programmi asukoha, kuid seda sättida ei õnnestu.

Proovisin
chdir(wd)
,
setenv("PWD", wd, 1)
ja
system("cd /home/karmo/Code/OpenGL/Tropics")
Kommentaarid: 63 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum
murka_
HV vaatleja

liitunud: 05.08.2008




sõnum 16.03.2011 20:54:24 vasta tsitaadiga

Aga, kas sa ei saa programmi asukoha järgi neid teisi faile laadida eeldades, et need asuvad samas kaustas?
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
asjameez
Kreisi kasutaja
asjameez

liitunud: 10.12.2006




sõnum 16.03.2011 21:22:15 vasta tsitaadiga

murka_ kirjutas:
Aga, kas sa ei saa programmi asukoha järgi neid teisi faile laadida eeldades, et need asuvad samas kaustas?

Peavõit thumbs_up.gif
Kommentaarid: 63 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 61
tagasi üles
vaata kasutaja infot saada privaatsõnum
Urmet
HV vaatleja

liitunud: 29.07.2005




sõnum 06.04.2011 12:51:46 vasta tsitaadiga

asjameez kirjutas:
GLchar wd[1024];
getcwd(wd, 1024);
cout << wd << endl;

Väljastab programmi asukoha, kuid seda sättida ei õnnestu.

Proovisin
chdir(wd)
,
setenv("PWD", wd, 1)
ja
system("cd /home/karmo/Code/OpenGL/Tropics")

Noh, noriks natuke, et chdir(wd) palub programmil töökaust sättida samaks kaustaks, mis ta juba on. Ja system() ei tohigi töökaustaga jamada. Ning getcwd() annab sulle programmi enda kausta ainult sel juhul, kui sa käivitad programmi käsurealtprogrammi endaga samas kaustas asudes.

Kui programmi ühest kaustast teise tõstma ei hakka ja täpsete kaustateede programmi sisse kirjutamine ei sega, oleks kõige lihtsam teha chdir("/home/karmo/Code/OpenGL/Tropics");
Kommentaarid: 10 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 10
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  Binaari käivitamine: ikoon vs käsurida.
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.