Tervehdys!
Tutustuin hetki sitten grafiikkakirjastoon nimeltä SFML. Se vaikuttaa todella pätevältä viritelmältä, ja on paljon mieluisampi minulle kuin SDL - näin olen päätellyt tutoriaaleja ja dokumentointia lukiessani. Ongelmani kuitenkin on SFML:n C++-painotteisuus. Onhan siinä C-kielellekin tehty versio, mutta onko siinä vajavaisuuksia? C++-version paketti on nimittäin 28 megatavua, mutta C:n vain kuusi. Tämä kummastuttaa minua.
Toinen ongelmani on kirjaston käyttäminen C:llä. En saa millään yksinkertaista ikkunan avaamiseen liittyvää koodiani kääntymään. Yritän muuttaa C++:lla kirjoitetun oppaan esimerkkiä C:lle, mutta huonoin tuloksin. Voisiko joku auttaa minua tai linkata C-ystävälliseen tutorialiin?
Annan esimerkin. Jos joku viitsii kääntää tämän C:ksi, saan varmaan juonesta kiinni ja osaan tulevaisuudessa soveltaa muiden koodirakenteiden kanssa.
//////////////////////////////////////////////////////////// // Headers //////////////////////////////////////////////////////////// #include <SFML/Window.hpp> //////////////////////////////////////////////////////////// /// Entry point of application /// /// \return Application exit code /// //////////////////////////////////////////////////////////// int main() { // Create the main window sf::Window App(sf::VideoMode(800, 600, 32), "SFML Window"); // Start main loop bool Running = true; while (Running) { App.Display(); } return EXIT_SUCCESS; }
Mikä tarkalleen on ongelmana? C-paketin sisällön perusteella näyttäisi, että tarvitsee vain valita oikeat otsikkotiedostot (hpp vs. h), muuttaa koodi C:ksi (oliot osoittimiksi, sprite.GetX():n tilalle sfSprite_GetX(sprite)) ja linkittää oikeat kirjastot (csfml-*).
Edit: Esimerkkiohjelmasta on C-kielinen versio CSFML:n dokumentaation etusivulla. Paketin osannet itsekin ladata SFML:n sivuilta.
Onko jokin erityinen syy käyttää C:tä? Kirjasto esiintyy paljon paremmin edukseen C++:lla, onhan siinä sentään käytetty abstrakteja rajapintoja ja muita hienouksia, joista C-versiossa ei pääse lainkaan nauttimaan.
Pakettien kokoero saattaa osin johtua esimerkiksi siitä, että C++-koodista tulee yleensä paljon enemmän debug-infoa. Suurin ero on juuri *-d.*-tiedostoissa, ei-debug-versiot ovat suunnilleen yhtä isot molemmilla kielillä.
No ainoa syy taitaa olla se, etten ole koskaan paneutunut C++:n maailmaan. Osaamiseni sen suhteen on aika pitkälti nollaluokkaa.
Kiitos kuitenkin vastauksesta. Sait myös minut ajattelemaan, josko siirtyisin vanhasta kunnon C:stä C++:n puolelle. Ei sen opetteleminen varmaan kauhean vaikeaa voi olla, kun osaa jo kielen edeltäjän. :-)
opettele ihmeessä. Ei se siirtyminen vaikeeta ole kunhan opettelee luokkien käytön :). Ja kun osaat jo perusteita suosittelen vilkaisemaan Effective C++ kirjaa mistä ainakin itse opin paljon uutta.
Aihe on jo aika vanha, joten et voi enää vastata siihen.