Ansi C ja GCC ja koodinkääntöpulma...

Saku-foorumi » Uusi sukupolvi: MorphOS » Ohjelmointi » Viestit 2004 » Ansi C ja GCC ja koodinkääntöpulma « Edellinen Seuraava »

Kirjoittaja Viesti
 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 11.04:   
yritän kääntää tätä softaa joka on ansi ctä

http://www.cybercom.net/~dcoffin/dcraw/

Kääntö sujuu kun karsin JPEG tuen mutta kun yritän Canonin (Powershot
Pro1) RAW kuvaa muntaa PPMän muotoon niin kaikki muut vaiheet sujuu
täysin mutta talletuksessa se saa tiedoston auki mutta edes neljä
tuntia myöhemmin tiedosto ei ole kiinni,jokin siis mättää yksi teoria
on jota toki kokeilen kohta. Seurauksena sitä luotua tiedostoa ei saa
auki. Joten voisiko joku asiantuntevampi katsoa tuota lähdekoodia joka
mitä ilmeisemmin toimii linuxissa oikein sillähän se on kehitettykin ?
ja toiminee kait windowsissakin hyvin.
PS. minulla ei "Poistu" morphos
versio unraristakaan. (Sitä en ole itse kääntänyt) Joten tulee mieleen
onko ansic puoli rikki gccstä vai mikä ihme tässä on. Nimimerkki halua
olisi kuvata myös RAWiksi mutta työkalu hankaloittaa hommaa.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 11.59:   
Nyt toimii kait muuten ok (24bit ppm kuvien osalta photoshopin
muodolle ja 48bit ppmälle en tehnyt modausta vielä) mutta ohjelma ei
lopeta itseään kun nn tehtävä on tehty ja sama ongelma vaivaa minulla
myös unrar ohjelmaa jota en itse ole kääntänyt. Eli jossain on
pielessä jotain mutta mitä ja missä ei ole kivaa ottaa uutta shelliä
jokaista kuvaa tai pakettia (jos unrar huomioidaan myös) varten.:(

PS. tein sellaiset muutokset että tiedosto suljetaan tietyssä kohtaa
kun alkuperäistä sulkukohtaa en löytänyt ja ratkaisi olettavasti edes
osan ongelmastani. Aika kivaa se on näinkin mutta silti todellakin
turhauttavaa.

 

Jon
Keskiviikkona, 13. lokakuuta, 2004 - klo 13.17:   
No debuggaa menemään, hyvä mies :) Laita vaikka printf:ää tai vastaavaa avainkohtiin niin tiedät missä mennään.

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 14.25:   
Ömh.. En ehdi tota just nyt kovin tarkkaan katsoa, mutta eikös se tiedoston sulkukohta ole tossa ihan main funktion lopussa just ennen cleanup: labelia.

Ainakin äkkiseltään toi näyttäs siltä.

Tiedosto avataan tässä:

ofp = fopen (ofname, "wb");
if (!ofp)
{
status = 1;
perror(ofname);
goto cleanup;
}

Täsä ilmeisesti kutsutaan funktiota, mikä tekee tiedostoon tallennuksen:

if (verbose)
fprintf (stderr, "Writing data to %s...\n", ofname);
(*write_fun)(ofp);

Ja tässä se tiedosto suljetaan:

if (ofp != stdout)
fclose(ofp);
cleanup:

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 14.26:   
Hyi yök, joku käyttää vielä gotoa..

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 14.48:   
Toimiiko tämä MOS:ssa ?

if (ofp != stdout)
fclose(ofp);

Jos tiedosto ei jostain syystä sulkeudu, niin ehkä se tökkää tohon ?

Mut jos ohjelma ei edes lopu, niin ehkä se jää silmukkaan jossain kohtaa...

En tiedä, ei tosiaan ehdi tota nyt katsoa tarkemmin.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 15.37:   
Jon: siinä ongelmana se että miten varmistan ettei printf kirjoita tiedostoon vaan aina ruudulle?

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 15.46:   
printf ei tulosta tiedostoon, vaan standardi tulostusvirtaan (stdout), eli se siis tulostaa aina ruudulle.

Tiedostoon voi tulostaa fprintf() funktiolla.

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 15.50:   
Siis olettaen ettei käyttäjä itse ohjaa tulostusta tiedostoon.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 15.55:   
miksuh: viimeisellä viestilläsi tarkoitanet tyyliä puuhamaa.exe >SER: ?
PS. unohdin tuon printf jutun...

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 16.04:   
fprintf() funktiolla voi toki tulostaa muuallekin kuin tiedostoon, kohteeksi voi laittaa esim stderr, kuten tossa ylläkin lähdekoodissas on. Stderr on siis tulostusvirta, mihin yleensä ohjataan virheilmotukset jne.

 

miksuh
Keskiviikkona, 13. lokakuuta, 2004 - klo 16.04:   
JPQ: jeps tuota tarkotin juurikin.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 19.58:   
Todellakin kummaa koodia nyt ei millään edes halua kääntyä illegal
argument just joo... varmasti kätevä softa ja vieläpä ainakin osalla
digikameroista ilmeisesti parempi kuin valmistajan softa
että jotain tarttisi tehdä ja pian.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 20.06:   
no eipä helloworldikaan halua... joten täytyy kait sdk pistää uusiksi
mutta mikä hitto sitä vaivaa...

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 20.54:   
no tein resetin sdk toimii ok jälleen mutta nyt takaisin ongelma
koodiin eli write_ppmän lopussa on free(ppm); kohta laitoin
koodin printfällä tulostamaan merkkijonon ennen tuota kohtaa ja
sen jälkeen eli tyyli on
printf("kohta tulee free(ppm);");
free(ppm);
printf("free(ppm); suoritettiin");

ja kappas kumpikaan teksti rivi ei tulostu joten jossain on jotain
pielessä ja pahasti.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 20.56:   
Joten jatkaamme tutkimuksia jos vain suinkin viitsisitte.:)
PS. menee kohta hermot...

 

antime
Keskiviikkona, 13. lokakuuta, 2004 - klo 21.10:   
Jos printf:ää aiot käyttää debuggaukseen, muista myös laittaa fflush(stdout) jokaisen tulostuksen jälkeen.

 

Jon
Keskiviikkona, 13. lokakuuta, 2004 - klo 21.15:   
Riittäiskö keno-N, eli tuttavallisesti \n?

 

itix
Keskiviikkona, 13. lokakuuta, 2004 - klo 21.50:   
printf() (useimmiten) bufferoi tulostuksen jos tekstissä ei ole rivinvaihtoja.

 

JPQ
Keskiviikkona, 13. lokakuuta, 2004 - klo 22.08:   
antime: mitäs tuo fflush(stdout) auttaa? vai tyhjääkös se tuon itixin sanoman bufferin?
itix: täytyy tutkia tuokin vielä.

 

Jupp3
Torstaina, 14. lokakuuta, 2004 - klo 10.36:   
JPQ:

Ja jos tarvit, niin tätäkin kannattanee testata:
int a = 5;
printf("a:n arvo on %d\n",a);

(huom! Tuo %d toimii vain kokonaisluvuilla!)

 

antime
Torstaina, 14. lokakuuta, 2004 - klo 10.47:   
JPQ: Jeps. Toinen vaihtoehto on pakottaa puskuroinnin pois käytöstä:

setbuf(stdout, NULL);

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 11.25:   
Jupp3: tiedän jotain muistan vaikka aika alussa olenkin.:)
antime: kiitos kohta kun katson classicilla eräät jutut rupean tuota koodia katselemaan.:)

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 12.08:   
Eiks se nyt ole yksinkertasempaa laittaa niitä rivinvaihtoja sinne :) Kyse on kuitenki debuggauksesta, eli varmaan kievempi kirjottaa mahdollisimman vähän sen takia :)

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 12.51:   
miksuh: noin minä teinkin ja havaitsin että mielestäni ihan sama koodi
heitti tiedoston ok talteen mutta nyt taasen ei lisäsin koodiin sinne
päin minne edelliset viat viittaavat parit printfät nyt ei edes
ellisen kerran 3kpl tule ruudulle eli noin rivillä 3907 oleva cleanup
tuntuu olevan että onko se ongelmamme nimi tai välillä tuntuu ettei
ongelma ole tässä koodissa vaan gcceessä.:(:( ja samanlaisesta
ongelmasta ettei ohjelma lopu tosiaan kärsii ainakin täällä unrar jota
en siis ole itse kääntänyt.:) ja tämäkin koodi kait toimii linukassa
oikein hyvin (kehittäjä käyttää linukkaa...) joten jotain ihmettä
tässä täytyy olla.

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 13.00:   
Mistäs mä löydän jonkun kuvan testitiedostoksi? Voin kokeilla kääntää ton alkuperösen koodin kotona ja kattoa toimisko se mulla.

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 13.33:   
miksuh: no täältä eli minulta löytyy tulee vaan aika iso liite
tiedosto sitten eli jotain 8megaa karkeasti ilman emailin
liitetiedostojen koodausta tai pakkausta jota toki myös yritän. Ja
kokeile sitäkin jos viitsit loppuuko morphos natiivi unrar sinulla
nätisti ? (siihenkin tarttisit rar paketin ja sellaista ei ole sinulle
vältämättä pistää)

PS. koodi tuntuu toimivan joskus paremmin eli joskus tuon luoman
datan saa auki joskus tulee vain 0 tavuinen tiedosto ja jotenkin alan
olla varma että tiedoston sulkeminen mättää koodissa kun sen jälkeiset
"debug rivit" eivät tulostu.

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 13.34:   
Jaha tuo testikuva ei lha pakkaudu eli joten tulee tosiaan iso liite.

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 13.36:   
Liitetiedoston koko ei ole ongelma, mailiboksiin mahtuu kyllä ja CDRW levylle myös :)

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 13.37:   
JPQ: Mulla ei ole MOS:a, kun ei ole Pegasosta :) Mut voin testata koodin kääntynistä 060:n kanssa ja katsoa onko siinä itsessään jotain outoa.

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 13.40:   
Kääntymistä ja tota tallennusta. Tietty voit heittää mulle sen sun muokkaamankin koodin jos haluat että katon mikä vois olla ongelmana.

Mut mä en tietenkään voi sanoa MOS kääntäjään jne liittyen mitään..

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 13.46:   
miksuh: mailin piti lähteä juuri. Jollei toinen sähköpostini mätä.
Viimeksi ei ainakaan mättänyt isoilla liitteillä toisin kuin mbnet.:(

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 13.49:   
miksuh: ainakaan hisoft c++ ei sisällä eräitä includeita muuten olisin
itse 060 kääntöä yrittänyt eikä ole tiloja Classicilla GCCelle eikä
taitoa edes asentaa sitä. Enkä VBCCtä ole vielä kokeillut missään
voisinkin ladata sen MOSille ja kokeilla. Ainoa mun muokkaus minkä
tein siksi että tuo kääntyy määrittelin oliko no_jpegin (asiasta on
koodin alussa juttua) joka sitä varten ettei erästä jpeg kirjastoa
tarvita.(en jaksanut ruvata noin paljon säätämään...)

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 13.54:   
miksuh: unohtui sanoa kiitos siitä yrität auttaa koska asia voi
vaikuttaa classicin ja pegan softa tarjontaan ja toki myös amigaonejen
jos joku porttaa softani jonka toteutuminen riippuu siitä onnistuuko
tämä yksi vaihe (vaikein sanoisin guin lisäksi) saada toimimaan.
PS. toki myös bisneksiini ihan muulla kuin ohjelmoinnin puolella.

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 14.05:   
Eipä tosta mitäöän vaivaa ole :) GCC:llä aattelin yrittää kääntää ton, eli eiköhän sen pitäs onnistua.

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 14.16:   
JPQ: Maili näyttäs tulleen perille, katon illalla tota kun olen kotona. Nyt just oon koululla, ja kohta pitäs mennä ohjelmointiluennoille.

 

antime
Torstaina, 14. lokakuuta, 2004 - klo 14.17:   
miksuh: Tietääkseni ei ole missään määritelty että rivinvaihto tyhjentäisi puskurit, ja muistelen että olen joskus kovasti ihmetellyt puuttuvia viestejä ennen kun otin stdoutista puskuroinnin pois.

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 16.29:   
Juu ei sitä kai ole missään määritelty, mutta ainakin itselläni on toiminut ihan ok. Toki sitten jos printf-lauseet on tarkotus jättää sinne ohjelmaan pysyvästi on parempi heittää perään fflush, mutta tilapäisessä bukin metsästyksessä en ole yleensä jaksanut niitä sinne kirjottaa. En kuitenkaan jättäs niitä printf("Plaah\n"); .."plimplom\n".. .."toimis ny\n".. jne rivejä sinne :)

 

miksuh
Torstaina, 14. lokakuuta, 2004 - klo 19.55:   
JPQ: Huomasin just, että mailit itse tuli perille, mut näyttäs ihan kun liitetiedosto ei olis tullu.. Tai sitten toi koulun uus webmaili bukittaa.. Olen vielä tääl koululla ja just meinasin tallettaa sen kuvan ennenku lähen kotii..

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 22.27:   
miksuh: voi visva täytyy tutkia jos sen saisin kotisivulleni jotenkin haettaville. Tai eräitä muita juttuja mutta nyt väsyttää liikaa joten jää minun takia perjantaihin. Eli katson kääntyykö tuo paremmin VBCCeellä jos saan sen morphosiin asennettua.

 

JPQ
Torstaina, 14. lokakuuta, 2004 - klo 23.27:   
Virkistyin hieman tosin vielä en jaksanut VBCC paketin kanssa tapella
joten täytyy tässä koekilla jotain muuta...

 

JPQ
Perjantaina, 15. lokakuuta, 2004 - klo 0.45:   
miksuh: yritin uudestaan mailin kanssa ja lähetin sen myös itselleni
jolla tarkistin etten itse kämminyt.

 

JPQ
Maanantaina, 18. lokakuuta, 2004 - klo 13.41:   
Miksuh: voimme varmaaankin tehdä näinkin eli käännät koodin ja kokeilen ajettavaa itse.

 

JPQ
Maanantaina, 18. lokakuuta, 2004 - klo 13.43:   
Ja ai niin käyttääkö tässä ketjussa esiintyvistä kukaan muu kuin minä unraria morphosilla ? jos niin loppuuko ohjelma normaalisti jos niin jotain on mulla pielessä jos käytämme samaa unrar versiota kun minulla ei lopu.
PS. VBCC tappelun kanssa tuli erään headeri fileen uupuminenkin ongelmaksi joten se saa jäädä odottamaan.

 

JPQ
Maanantaina, 18. lokakuuta, 2004 - klo 16.20:   
Kokeilimme kaverin kääntämää ajettavaa jonka hän käänsi windows32 konsoli softaksi Visual Studio 6:sella ja kappas toimii niin kuin pitää eli onko GCC vieläkin rikki jostain? tosiaan tuo unrar juttukin hämää eli mikähän ihme tässä on...

 

JPQ
Maanantaina, 18. lokakuuta, 2004 - klo 16.32:   
Ja minuun saa yhteyden sähköpostilla joka on tässä viestissä.
PS. menee kohta hermot että miten näin helppo juttu voi olla näin ongelmallinen.

 

Jon
Maanantaina, 18. lokakuuta, 2004 - klo 16.49:   
Sanoisin, että Visual Studio 6 on enemmän rikki kuin GCC jos standardeista puhutaan :)

Mutta hei, laita mulla sorsat ja pikku kuva paketissa niin kokeilen GCC 3.4:lla.

 

JPQ
Maanantaina, 18. lokakuuta, 2004 - klo 19.52:   
Jon: aha ja pistin postia. Ja voi olla että enempi rikki mutta miltä
osin.:) tosiaan tuo UNRAR temppuilee myös samaan tyyliin.:(

 

Frn
Maanantaina, 18. lokakuuta, 2004 - klo 20.08:   
JPQ: Mulla taisi myös olla samainen ongelma tuon unrarin kanssa MorphOS:lla.

 

JPQ
Maanantaina, 18. lokakuuta, 2004 - klo 20.47:   
Frn: mukava kuulla osin mutta toisessa mielessä ei mukava.

 

JPQ
Tiistaina, 19. lokakuuta, 2004 - klo 1.30:   
Täällä on teille vihdoin RAW

http://koti.mbnet.fi/~jpq/CRW_1905.CRW
linkki kopioitu käsin toivon etten typota.

 

JPQ
Tiistaina, 19. lokakuuta, 2004 - klo 13.53:   
Voi rahvattu kokeilin tuota Jonin käännöstä MorphOSissa (se kylläkin
68k AmigaOSille käänetty) mutta sekin näyttää bugaavan ihan samalla
tavalla eikun classic amigalla tässä testi jossain välissä.
(koodi ajo kestänee vaan julmasti siksei kovin pian... onhan
käsiteltävää dataa noin 8megatavua ja tulos dataa 24megatavua)
PS. jos siellä silti toimii niin alkaa ärsyttämään ja hirveästi.

 

miksuh
Perjantaina, 22. lokakuuta, 2004 - klo 11.18:   
Mikäs ton homman tilanne on ? Onko selvinnyt ? Mulla on tenttiviikkot just menossa, siksi en ole täälläkään tän viikon aikana pahemmin ehtinyt käydä.

 

Jon
Perjantaina, 22. lokakuuta, 2004 - klo 14.36:   
Minä en pystynyt JPQ:n kuvaa testaamaan kun on niin vähän muistia itsellä. Käänsin exen vanhalla GCC:llä M68K:lle.

 

Jon
Perjantaina, 22. lokakuuta, 2004 - klo 14.38:   
Ainiin, JPQ: kokeiles sitten Snoopiumin kanssa miten käy :)

 

JPQ
Perjantaina, 22. lokakuuta, 2004 - klo 15.25:   
miksuh: ei ole olisin kertonut jos olisi ja tuo Jonin 68k ajettava
tekee morphosissa saman kuin natiivi käännös.
Jon: täytyy katsoa mitä snoopdos sanoo orphosissakin.
PS. Tarkoitus oli tutkia juurikin kait tänään asiaa mutta voisin nyt
sitä sitten katsoa kun toista kiirettä ei tullutkaan vielä.

 

JPQ
Perjantaina, 22. lokakuuta, 2004 - klo 15.49:   
Eipä näytä valittavan failia kun siinä kohtaa kun tiedostoa avataan
(eli oletan että append epäonnistuu kun tiedostoa ei vielä ole) mutta
sinne kirjoitus sujuu silti. Tänään kirjoitti ihan nätisti mulle
tiedoston annetusta RAWista mutta ongelma on siinä ettei nytkään
ohjelma tarvitun operaation jälkeen lopu mitenkään. Joten sanoisin
karkeasti pahin vika on ohjelman loppupuolella jossain. Ja ilmeisesti
aika MorphOS spefinen jollei AmigaOSissa käy samaa kun testaan kun
jaksan. Kun Linuxissa kait toimii ok koska sieltä kotoisin
,windowsissa toimii ok.

 

JPQ
Perjantaina, 22. lokakuuta, 2004 - klo 16.20:   
Jon: kokelin snoopdosilla kylläkin kun snoopiumia en ihan heti löytänyt (latasin sen jo kylläkin) mutta en ysko tuossa kamalan suurta eroa tulee.
PS. miten ihmeessä te jaksatte muittaa guit... jopa natiivin käsin naputtelu tuntuu hirveältä ajatukselta...

Lisää viestisi tähän
Viestisi:
Käyttäjätunnus: Postitus informaatiota:
Tämä on yksityinen keskustelupalsta. Vain rekisteröidyt käyttäjät ja moderaattorit voivat postittaa tänne.
Salasana:
valinnat: Aktivoi URL:t automaattisesti tässä viestissä
Toimenpide: