Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C++: Dll-kysymys

Sivun loppuun

Koipio-ohjelma [31.08.2004 18:37:19]

#

Koska olen vielä kovin ummikko ohjelmoinnnissa niin kysyisin tällaista asiaa: miten dll-tiedostot toimivat? Olen varma että joistain tämä kuulostaa typerältä mutta ihan (aikuisten:) oikeasti miten ne toimivat?

edit: lisäänpä toisen kysymyksen: kun tuossa vähän aikaa sitten mietin miten tehdä kenttä peliin niin siihen liittyen. Sanotaan että kenttä koostuu 30x30 taulukosta jossa jokainen muuttuja on kuva joka on 20px leveä ja korkea. Niin voisiko sen tehdä niin että taulukossa on olioita eikä tarvitsisi tehdä useita taulukoita. Eli kenttä koostuu olioista joille annetaan eri ominaisuuksia (esim. hahmon hidastus,kuva,etc). Vai pitääkö se tehdä käyttämällä useita taulukoita joissa ruutujen tietty ominaisuus on tietyssä taulukossa? Tämä kyllä kuulostaa kovin kaukaa haetulta mutta tämä kysymys on tuskastuttanut minua jo kauan. Toivottavasti ymmärsitte mitä tarkoitin.

Aruviel [31.08.2004 19:15:11]

#

Tuohon kenttäaiheiseen kysymykseen. Teet vain "yleispätevän" luokan/tietueen, jossa ovat nuo haluamasi ominaisuudet. Ja sitten teet taulukollisen näitä.

Esimerkiksi minulla on Tile struct, joka sisältää todella paljon asioita liittyen yhteen ruutuun. Pelikartta, joka on 75x23 tilen/ruudun kokoinen koostuu noista Tileistä. Ja se alustettaisiin tyyliin:

Tile LevelMap[sizex][sizey];

Tai näin minä sen tekisin, jos ymmärsin oikein sen, mitä tarkoitat.

Koipio-ohjelma [31.08.2004 19:26:36]

#

Joo ymmärsit oikein :D Harva enää ymmärtää minua, tervetuloa valittujen joukkoon (75% edeltävästä on totta)

Antti [01.09.2004 01:15:28]

#

Tuohon Dll-aiheiseen kysymykseen:
Dll eli Dynamic Link Library on varsinaisesta suorittavasta ohjelmasta erilleen kirjoitettu
kokoelma funktioita ja metodeita. Useimmiten ne liittyvät samaan aiheeseen ja suorittavat tietyn aihepiirin osia.

Dll:n ideana on tuoda funktiot pois suorittavasta ohjelmasta, jotta niitä voitaisiin yleispätevästi käyttää myös muissa ohjelmissa, jotka tarvitsevat dll:n suorittamia toimintoja.

Dll:n funktiot toimivat lähes tarkalleen samaan tapaan kuin josolisit koodannut ne itse suorittavaan ohjelmaan.

Dll tiedoston saat käyttöösi luomalla ohjelmaan viittauksen eli referenssin dll:ään - tapa jolla referenssi luodaan riippuu ohjelmointi kielestä.

Kun referenssi on luotu ja objekti esitelty (myös kieliriippuvainen toiminto) voit kutsua haluamaasi funktiota kielessä.

Koipio-ohjelma [01.09.2004 19:07:59]

#

Jaa huomasin että täähän on ihan väärässä kategoriassa tämänhän pitäisi olla yleisessä :D Niin ja kiitos Antille tuo selvensi asiaa paljon :D

Koipio-ohjelma [06.09.2004 18:51:25]

#

Öh mitenkäs nuita luokkia voi määritellä? En löytänyt ohjetta vaikka etsinkin netistä (aika hätäisesti tosin)?

Aruviel [06.09.2004 19:51:51]

#

Oletetaan, että olet C++:lla liikenteessä.

http://www.nic.funet.fi/c opas/oliot.html

Jos et, niin etsi tietueista, eli structeista, tietoa. Tietty structeja voi heittää C++:n sekaan myöskin, niinkuin itse teen.

// Ymmärrät tästä varmaankin sen "idean" ;<
struct Pelaaja {
int x,y;
string name;
};

Pelaaja PlayerOne;

PlayerOne.x = 50;
PlayerOne.y = 25;
PlayerOne.name = "Aruviel";

cout << PlayerOne.name << endl;

thefox [07.09.2004 14:11:58]

#

cout:lle pitänee kuitenkin antaa PlayerOne.name.c_str() koska se ei taida string-olioita suoraan syödä.

Aruviel [07.09.2004 14:53:36]

#

Hmm, kyllä se minulla niitä suostuu syömään. En sitten tiedä, onko jotenkin väärin tehdä noin?

Koipio-ohjelma [07.09.2004 16:39:52]

#

Jaa kiitos taas :D Nyt voin jatkaa pelin tekoa XD

tn [07.09.2004 20:28:40]

#

Aruviel kirjoitti:

Hmm, kyllä se minulla niitä suostuu syömään. En sitten tiedä, onko jotenkin väärin tehdä noin?

Kyllähän se toimii, ja tuskin se mitenkään väärin on, kun kerran siihen on tuollainen mahdollisuus koodattu... :)
Avattavan tiedoston nimeä (i/o)fstraeam ei jostain syystä sen sijaa suostu ottamaan vastaan stringinä, vaan siinä pitää käyttää tuota c_str()-funktiota.

Jaska [08.09.2004 13:35:42]

#

Niin, siis c_str()-funktiota käytetään silloin kun halutaan string-merkkijono kopioida char*-taulukkoon. Koska cout on kuormitettu tulostamaan stringejä, on muunnos tarpeeton.

Metabolix [08.09.2004 17:18:08]

#

Tuohan riippuu täysin iostreamin versiosta. Ainakaan minulla tuo ei toimi.

thefox [09.09.2004 01:07:00]

#

Niinpä toimii, pirulainen, ainakin MSVC++ 6:ssa, Intel C++ Compiler 8.0:ssa ja GCC:ssä. Heitin kommenttini tuon "String-luokat Vc++ 5.0:ssa"-keskustelun perusteella, itse string-luokan käytöstä minulla ei ole juurikaan omakohtaista kokemusta.


Sivun alkuun

Vastaus

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

Tietoa sivustosta