Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: DevCpp ei suostu linkittämään

Gaxx [27.10.2007 19:41:13]

#

Sitten seuraa hieman oudompi näytelmä...

Koodailin tuota rpg-engineäni kaikessa rauhassa eilen illalla. Kääntelin ja linkittelin välillä, testailin ja taas kirjottelin lisää koodia, kuten asiaan kuuluu...

Sitte yhtäkkiä, kuin salama kirkkaalta taivaalta, kääntäjä ei suostunut enää linkittämään objektitiedostoja exe:ksi. Ohjelma kääntyi ilman virheitä ja varoituksia, mutta kun tuli linkityksen aika, se sanoi, "Done".

/scene.

Muut ohjelmat kääntyvä ja linkittyvät normaalisti. Kellään kokemuksia tai vinkkejä?

Edit: En oikein tiedä, mitä tietoja tähän laittaisin, kun ei ole hajuakaan, mistä toi vois johtua. DevCpp on asennettu uudestaa ja olen kokeillut tehdä tiedostoista uuden projektin, mutta kumpikaan ei ole auttanut.

Gaxx [27.10.2007 22:50:36]

#

Olen nyt illan aikana yrittänyt selvittää ongelmaa ja todennut, että ongelma on jotenkin tiedostojen lukumäärässä. Jos poistan minkä tahansa tiedoston projektista(-> yksi .o tiedosto vähemmän), projekti kääntyy ja linkittyy. Minun tapauksessani 27 tiedostoa linkittyy, mutta 28 ei.

Voiko olla mahdollista, että linkkerillä tapahtuu joku muistivuoto tai se ei vain muuten pysty käsittelemään noin montaa tiedostoa?

Kääntäjänä toimii (uusimman)iden mukana tuleva mingw.

Edit: Tei toisen projekti, johon lisäsin runsaasti tiedostoja. 31 tiedostoa(kirjastot laskettu mukaan) linkittyy, mutta 32 ei.

Mistä mää saan sellasen linkkerin, joka osaa linkittää "suuren" määrää tiedostoja ja toimii windows98:lla?

Gaxx [28.10.2007 00:04:46]

#

Monologi jatkuu...

Onko ainoa kätevä ratkaisu ongelmaan linkittää ohjelman osista kirjastoja ja täten vähentää yhtä aikaa linkitettävien tiedostojen määrää?

Markus [28.10.2007 13:34:45]

#

Windowssin komentoriviparametrin enimmäispituus tulee ilmeisesti vastaan. Vika ei ole siis ilmeisesti linkkerissä vaan Windowssissa. Kokeile siirtää projektisi hakemistoon, jonka hakemistopolun nimi on lyhempi esim. "c:/p" ja käyttämällä lyhempiä tiedostonimiä esim. "t1.c" ja "t2.c". Tällöin komentoriviparametrista tulee lyhempi ja saat mahdutettua siihen enemmän tiedotoja.

Törmäsin kerran itse samaan ongelmaan yrittäessäni kääntää Linuxille tekemääni ohjelmaa Windossissa. Sain ohjelman kääntymään, kun siirsin sen hekemistoon, jolla oli lyhyempi nimi.

Toinen mahdollisuus on toki linkittää osissa (tai vaihtaa käyttöjärjestelmää).

Gaxx [28.10.2007 14:51:16]

#

Kokeilin siirtää ohjelmani c:n juureen ja lyhentää tiedostonnimiä, mutta sillä ei ollut mitään vaikutusta. Ehkä windowsissa on jokin parametrirajakin.

Täytyy kai tyytyä sitten linkittämään ohjelma osissa.

Markus [28.10.2007 19:21:28]

#

Gaxx kirjoitti:

Kokeilin siirtää ohjelmani c:n juureen ja lyhentää tiedostonnimiä, mutta sillä ei ollut mitään vaikutusta. Ehkä windowsissa on jokin parametrirajakin.

Täytyy kai tyytyä sitten linkittämään ohjelma osissa.

Laitatko makefilesi tänne näkyville, niin katsotaan varalta sisältöä...

Gaxx [28.10.2007 21:17:42]

#

Sain ratkaistua ongelman linkittämällä tiedostot suoraan komentoriviltä. Nyttemmin ohjelma kääntyy ja linkittyy kyllä ihan idenkin kautta. Ongelman ilmeisesti aiheutti jostain syystä tyhjentynyt kooditiedosto. Ide kai sekoili sen kanssa...

Nyt sitten kirjoittelen sitä kooditiedostoa uudelleen :E Ei oo helppoa, kun on puolitoista vuotta vanhaa koodia. Onneks headerin kommentit on sentään kohdallaan :)

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta