C++ -kysymykset

Muu yhteisön välinen keskustelu.
Aavesoturi
Active Member
Posts: 163
Joined: Fri Aug 31, 2007 7:07 pm
Location: Helsinki
Contact:

Re: C++ -kysymykset

Post by Aavesoturi »

esa94 wrote:Cg tosin toimii vain nVIDIAn raudalla kunnolla kun se on niille kehitetty
Cg on tavallaan meta shader kieli. Se konvertoidaan sopivaksi GLSL versioiksi tai Direct3D HLSL:ksi tai jopa muinaisiksi GL ARB assembly shadereiksi. Tämän voi tehdä offlinenä etukäteen Cg kääntäjällä (joka ei tarvi NVidian näyttistä) tai lennosta valiten sopivan profiilin raudalle ajon aikana. Koska Cg on apaut 99% sama kuin D3D HLSL (ja muidenkin konversio optioiden takia) se toimii kivasti ATInkin näyttiksillä.

EDIT: Hups, oli quoten lähde menny sekasin ylemmän tason lainausta poistaessa.
Last edited by Aavesoturi on Sun Dec 11, 2011 3:10 pm, edited 1 time in total.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

Aavesoturi wrote:
JATothrim wrote:Cg tosin toimii vain nVIDIAn raudalla kunnolla kun se on niille kehitetty
Cg on tavallaan meta shader kieli. Se konvertoidaan sopivaksi GLSL versioiksi tai Direct3D HLSL:ksi tai jopa muinaisiksi GL ARB assembly shadereiksi. Tämän voi tehdä offlinenä etukäteen Cg kääntäjällä (joka ei tarvi NVidian näyttistä) tai lennosta valiten sopivan profiilin raudalle ajon aikana. Koska Cg on apaut 99% sama kuin D3D HLSL (ja muidenkin konversio optioiden takia) se toimii kivasti ATInkin näyttiksillä.
Äläpä attribuuttaa JATothrimille vahingossa
Sami345
Advanced Member
Posts: 349
Joined: Fri Aug 31, 2007 4:52 pm
Contact:

Re: C++ -kysymykset

Post by Sami345 »

Minulla olisi tällä kertaa tällaista ongelmaa. Kääntäjä antaa virheen:

Code: Select all

c:\mingw\bin\..\lib\gcc\mingw32\4.6.1\include\c++\bits\stl_tree.h:133|12|instantiated from 'std::_Rb_tree_node<std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource> >'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.1\include\c++\bits\stl_tree.h:1064|4|instantiated from 'void std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_M_erase(std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::_Link_type) [with _Key = std::basic_string<char>, _Val = std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource>, _KeyOfValue = std::_Select1st<std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource> >, _Compare = std::less<std::basic_string<char> >, _Alloc = std::allocator<std::pair<const std::basic_string<cha|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.1\include\c++\bits\stl_tree.h:639|9|instantiated from 'std::_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::~_Rb_tree() [with _Key = std::basic_string<char>, _Val = std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource>, _KeyOfValue = std::_Select1st<std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource> >, _Compare = std::less<std::basic_string<char> >, _Alloc = std::allocator<std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource> >]'|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.1\include\c++\bits\stl_map.h:88|11|instantiated from here|
c:\mingw\bin\..\lib\gcc\mingw32\4.6.1\include\c++\bits\stl_pair.h|112|error: 'constexpr std::pair<_T1, _T2>::pair(const std::pair<_T1, _T2>&) [with _T1 = const std::basic_string<char>, _T2 = ResourceManager<sf::Texture>::Resource, std::pair<_T1, _T2> = std::pair<const std::basic_string<char>, ResourceManager<sf::Texture>::Resource>]' declared to take const reference, but implicit declaration would take non-const|
||=== Build finished: 1 errors, 0 warnings ===|
Tässä on koodi luokasta, jonka arvelen virheen aiheuttavan.

Code: Select all

// ResourceManager.hpp

#ifndef RESOURCEMANAGER_HPP_INCLUDED
#define RESOURCEMANAGER_HPP_INCLUDED

#include <map>
#include <boost\thread.hpp>

template <typename T>
class ResourceManager
{
    private:
        class Resource
        {
            private:
                T* resource;
                unsigned int uses;
                boost::thread loader;

            public:
                Resource(T* resource = NULL, unsigned int uses = 0);

                T* getResource();
                void setResource(T* resource);

                void use();
                void disuse();

                unsigned int getUses();
                void setUses(unsigned int uses);

                bool isUsed();
        };

        boost::mutex resources_mutex;
        std::map<std::string, Resource> resources;

    protected:
        virtual T* loadResource(std::string file) = 0;

    public:
        void use(std::string file);
        T* get(std::string file);
        void disuse(std::string file);

        ~ResourceManager();
};

#endif // RESOURCEMANAGER_HPP_INCLUDED

Code: Select all

// ResourceManager.cpp

#include "ResourceManager.hpp"

template <typename T>
ResourceManager<T>::Resource::Resource(T* resource, unsigned int uses)
    : resource(resource), uses(uses)
{

}

template <typename T>
T* ResourceManager<T>::Resource::getResource()
{
    return resource;
}

template <typename T>
void ResourceManager<T>::Resource::setResource(T* resource)
{
    this->resource = resource;
}

template <typename T>
void ResourceManager<T>::Resource::use()
{
    uses++;
}

template <typename T>
void ResourceManager<T>::Resource::disuse()
{
    if(uses == 0) throw std::runtime_error("Trying to disuse unused resource!");

    uses--;
}

template <typename T>
unsigned int ResourceManager<T>::Resource::getUses()
{
    return uses;
}

template <typename T>
void ResourceManager<T>::Resource::setUses(unsigned int uses)
{
    this->uses = uses;
}

template <typename T>
bool ResourceManager<T>::Resource::isUsed()
{
    return uses > 0;
}

template <typename T>
void ResourceManager<T>::use(std::string file)
{
    boost::lock_guard<boost::mutex> resources_lock(resources_mutex);

    if(resources.count(file) == 0)
    {
        T* resource = loadResource(file);

        resources[file] = Resource(resource);
    }

    resources[file].use();
}

template <typename T>
T* ResourceManager<T>::get(std::string file)
{
    boost::lock_guard<boost::mutex> resources_lock(resources_mutex);

    if(resources.count(file) == 0)
        throw std::runtime_error("The resource you are searching for isn't loaded!");

    Resource resource = resources[file];

    if(!resource.isUsed())
        throw std::runtime_error("There are no uses left on this resource!");

    return resource.resource;
}

template <typename T>
void ResourceManager<T>::disuse(std::string file)
{
    boost::lock_guard<boost::mutex> resources_lock(resources_mutex);

    if(resources.count(file) == 0)
        throw std::runtime_error("The resource you are searching for isn't loaded!");

    Resource resource = resources[file];

    resource.disuse();

    if(!resource.isUsed())
    {
        delete resource.resource;
        resources.remove(file);
    }
}

template <typename T>
ResourceManager<T>::~ResourceManager()
{
    boost::lock_guard<boost::mutex> resources_lock(resources_mutex);

    for(typename std::map<std::string, Resource>::iterator it = resources.begin(); it != resources.end(); it++)
    {
        if((*it).second.isUsed())
        {
            throw std::runtime_error((*it).first + " was still in use when ResourceManager was destroyed!");
        }

        delete (*it).second.resource;
    }
}
EDIT:

Resourcessa sijaitseva boost::thread aiheutti virheen.

Projektit: Fiperus - Jäädytetty pidemmäksi aikaa.
Voitot: Viikkokisa XIII, Pikapelikisa 3, Pikapelikisa 13
http://www.sami345.tk/
JATothrim
Tech Developer
Tech Developer
Posts: 606
Joined: Tue Aug 28, 2007 6:46 pm
Location: Kuopio

Re: C++ -kysymykset

Post by JATothrim »

Et anna boost::threadille parametreja Resource:n konstruktorissa. Tästä syystä boost::thread pitää usein varata dynaamisesti:

Code: Select all

boost::thread * m_thread = new boost:thread(funktio, parametrit);
Ajaa funktion uudessa säikeessä. Ts. ei ole olemassa validia boost::thread instanssia, mikäli thread ei ole käynnissä. m_thread->join() käytännössä tuhoaa thread-olion, etkä voi käynnistää säijettä uudestaan samalla instanssilla.

Jos dynaaminen thread olio ei käy päinsä, pitää jäsenoliolle antaa parametrit kuten muillekkin Resource:n konstruktorissa:

Code: Select all

template <typename T>
ResourceManager<T>::Resource::Resource(T* resource, unsigned int uses)
    : resource(resource), uses(uses), loader(loader_thread_main, parametri)
{

}
Koodivinkkinä sanoisin, että ota Resource-luokka ulos ResourceManager-luokasta. Käytä mieluummin namespace + friend yhdistelmää, jolloin Resource-luokka on ulkona ResourceManagerista ja näiden ylläpito helpottuu. (erityisesti implementaatio) Määritä siis Resource-malli ResourceManager-mallin kaveriksi, ja siirrä Resource-malli tarvittaessa detail-namespaceen, jos sen ei haluta näkyvän suoraan käyttäjälle. "luokan määritys luokan sisälle" on yleesä hyödyllinen silloin, kun tarvitaan POD tietotyyppi tyyliin "struct data { void * pdata; };" ja sen ei tarvitse näkyä luokan käyttäjille.

Templateista muistuttasin, että niitä ei voida implementoida kuten tavallisia luokkia, koska ne eivät ole luokkia, vaan malleja! Paras tuntemani tapa on esitellä malliluokka templateheader.hpp tiedostossa (kuten olet jo tehnytkin) ja sisällyttää sitten templateimpl.inl-tiedosto templateheader.h:n lopussa. (templateheader.h headerguardien sisällä, templateimpl.inl ei tarvitse guardeja, samaan tapaan kuin .cpp. Kannattaa lisätä @note templateimpl.inl:een, että ko. tiedosto on jo sisällytetty toiseen headeriin mukaan, ettet mene sotkemaan esikääntäjän kanssa.)
C++11 helpottaa mallien implementaatiota sallimalla extern:n käytön template-luokille.
-On selkeästi impulsiivinen koodaaja joka...
ohjelmoi C++:lla rekursiivisesti instantioidun templaten, jonka jokainen instantiaatio instantioi sekundäärisen singleton-template-luokan, jonka jokainen instanssi käynistää säikeen tulostakseen 'jea'.
Kumiankka
Member
Posts: 65
Joined: Wed May 18, 2011 5:17 pm
Location: Artjärvi

Re: C++ -kysymykset

Post by Kumiankka »

Osaisikos kukaan ehdottaa mitään peliohjelmointiin soveltuvaa kirjatoa? Pärjääkö SDL:llä tai SFML:llä?
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: C++ -kysymykset

Post by temu92 »

SFML:llä voi piirtää 2D grafiikkaa ja OpenGL:n käyttö onnistuu 3D-grafiikan luontia varten. Muistaakseni äänet ja musiikitkin onnistuu sillä toistaa. Kuitenkin jos haluaa vähän "kehittyneempiä" pelejä tehdä niin joku erillinen fysiikkamoottori, esim. Box2D tai Chipmunk, voi olla hyvä tarkastaa josko sopisi omiin tarkoituksiin.

SDL on wanha ja kehitetty C:lle, SFML on uudempi ja tukee C++:n olio-ohjelmointiominaisuuksia joka tekee siitä huomattavasti helpomman käytettävän. Ennyt muista tasan tarkkaan miten SDL toimii mutta periaatteessa SFML on OpenGL-wrapperi 2D-grafiikan piirtoon joka siis toisin sanoen meinaa sitä, että graffat piirretään laitteistokiidytyksellä.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

temu92 wrote:SDL on wanha ja kehitetty C:lle
Joskin sitä päivitetään yhä ahkerasti eikä se ole juuri lainkaan vanhentunut teknologisesti.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

Allegro troublez. Näyttää siltä että seuraava esimerkkikoodi ei luo ikkunaa eikä muuta sitä oikean väriseksi. Kuitenkin se restaa sen 5 sekkaa. Mikä on ongelma?

Code: Select all

#include <allegro5/allegro.h>
#include <allegro5/allegro_native_dialog.h>

int main(void)
{
  ALLEGRO_DISPLAY *display = NULL;
 
  if(!al_init()) 
  {
    al_show_native_message_box(NULL, NULL, NULL, 
                 "failed to initialize allegro!", NULL, NULL);                   
    return -1;
  }
 
  display = al_create_display(800, 600);

  
  if(!display) 
  {
    al_show_native_message_box(NULL, NULL, NULL, 
                "failed to initialize display!", NULL, NULL);
    return -1;
  }
  al_clear_to_color(al_map_rgb(255,0,255));
  al_flip_display();
  al_rest(5.0);
  al_destroy_display(display);

  return 0;
}
Allegro on versio 5.0.5 Dev-c++:n DevPakina.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

naputtelija wrote:Allegro troublez. Näyttää siltä että seuraava esimerkkikoodi ei luo ikkunaa eikä muuta sitä oikean väriseksi. Kuitenkin se restaa sen 5 sekkaa. Mikä on ongelma?

Code: Select all

#include <allegro5/allegro.h>
#include <allegro5/allegro_native_dialog.h>

int main(void)
{
  ALLEGRO_DISPLAY *display = NULL;
 
  if(!al_init()) 
  {
    al_show_native_message_box(NULL, NULL, NULL, 
                 "failed to initialize allegro!", NULL, NULL);                   
    return -1;
  }
 
  display = al_create_display(800, 600);

  
  if(!display) 
  {
    al_show_native_message_box(NULL, NULL, NULL, 
                "failed to initialize display!", NULL, NULL);
    return -1;
  }
  al_clear_to_color(al_map_rgb(255,0,255));
  al_flip_display();
  al_rest(5.0);
  al_destroy_display(display);

  return 0;
}
Allegro on versio 5.0.5 Dev-c++:n DevPakina.
Hmm, mitä virheilmoituksia tulee? Olethan muistanut linkittää Allegron?
Btw, miksi Allegro? SFML olisi helpompi käsitellä oliopohjaisuuden takia. :)
EDIT:

Niin ja miksi Dev-C++?
Edelleen suosittelen tätä http://www.codeblocks.org/

Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

MaGetzUb wrote:
naputtelija wrote:Allegro troublez. Näyttää siltä että seuraava esimerkkikoodi ei luo ikkunaa eikä muuta sitä oikean väriseksi. Kuitenkin se restaa sen 5 sekkaa. Mikä on ongelma?

Code: Select all

#include <allegro5/allegro.h>
#include <allegro5/allegro_native_dialog.h>

int main(void)
{
  ALLEGRO_DISPLAY *display = NULL;
 
  if(!al_init()) 
  {
    al_show_native_message_box(NULL, NULL, NULL, 
                 "failed to initialize allegro!", NULL, NULL);                   
    return -1;
  }
 
  display = al_create_display(800, 600);

  
  if(!display) 
  {
    al_show_native_message_box(NULL, NULL, NULL, 
                "failed to initialize display!", NULL, NULL);
    return -1;
  }
  al_clear_to_color(al_map_rgb(255,0,255));
  al_flip_display();
  al_rest(5.0);
  al_destroy_display(display);

  return 0;
}
Allegro on versio 5.0.5 Dev-c++:n DevPakina.
Hmm, mitä virheilmoituksia tulee? Olethan muistanut linkittää Allegron?
Btw, miksi Allegro? SFML olisi helpompi käsitellä oliopohjaisuuden takia. :)
EDIT:

Niin ja miksi Dev-C++?
Edelleen suosittelen tätä http://www.codeblocks.org/

Ei virheilmoituksia. Hommanpas ton codeblocksin ja SFML:n sitten.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: C++ -kysymykset

Post by MaGetzUb »

naputtelija wrote: Ei virheilmoituksia. Hommanpas ton codeblocksin ja SFML:n sitten.
Virheilmoituksilla siis meinaan Dev-C++:n Compile logiin ilmestyvää tekstiä. ;)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

Code: Select all

Compiler: Default compiler
Building Makefile: "C:\Dev-Cpp\Allegrot\Aloitus\Makefile.win"
Executing  make...
make.exe -f "C:\Dev-Cpp\Allegrot\Aloitus\Makefile.win" all
make.exe: Nothing to be done for `all'.

Execution terminated
Compilation successful

<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: C++ -kysymykset

Post by naputtelija »

Proseduurin aloituskohtaa _ZN2sf5ClockC1Ev ei löydy dynaamisesti linkittyvästä kirjastosta sfml-system.dll?

Code: Select all

#include <SFML/System.hpp>
#include <iostream>

int main()
{
    sf::Clock Clock;
    while (Clock.GetElapsedTime() < 5.f)
    {
        std::cout << Clock.GetElapsedTime() << std::endl;
        sf::Sleep(0.5f);
    }

    return 0;
}

<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: C++ -kysymykset

Post by valscion »

Itse olen oikein tykästynyt nyt Allegroon, SFML kun jäi cbEnchantedista pois sen bugisuuden takia niin en sen kanssa jaksa säätää. Omasta mielestäni hyvä editori puolestaan on Qt Creator, jonka saat Qt SDK:n mukana (itselläni taisi olla versio 4.8.0). Sen lisäksi kun lataa Visual C++ 2010 Expressin niin saat kääntäjän, jolla olen ainakin itse saanut onnistuneesti Allegron pyörimään. Olen ladannut Allegron täysin valmiina toimintaan täältä (Allegro Windows Binaries) ja valinnut tuon MSVC 10 paketin. Sitten pistät mieleen sen, että minne paketin purat. Olisi hyvä jos purkaisit paketin sellaiseen tiedostopolkuun, jossa ei esiinny välilyöntejä, muuten saatat joutua jännän äärelle.

Jos aiot valita minun vaihtoehtoni, niin tässä olisi esimerkki .pro-tiedostosta, jolla Qt Creator avaa projektin ja luo linkkerille ja kääntäjälle oikeat asetukset. Tallenna se <mikätahansanimi>.pro tekstitiedostona ja avaa se Qt Creatorilla. Katso SOURCES-rivi, jolla olen määritellyt että projektin lähdekoodit ovat yhdessä tiedostossa nimeltä main.cpp, joka sijaitsee samassa kansiossa .pro tiedoston kanssa.

Code: Select all

TEMPLATE = app
CONFIG += console
CONFIG -= qt

SOURCES += main.cpp


win32 {
        LIBS += -lkernel32 -luser32 -lgdi32 -lwinspool -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lopengl32 -lPsapi -lWinmm -lShlwapi

        DEFINES += WIN32 ALLEGRO_STATICLINK
        INCLUDEPATH += "$$(ALLEGRO_INCLUDE)"
        DEPENDPATH += "$$(ALLEGRO_INCLUDE)"
        CONFIG(release, debug|release){
                LIBS += -L"$$(ALLEGRO_LIB)" -lallegro-5.0.6-monolith-static-md -llibvorbisfile-1.3.2-static-md -lzlib-1.2.5-static-md -llibogg-1.2.1-static-md -llibFLAC-1.2.1-static-md -lfreetype-2.4.8-static-md -ldumb-0.9.3-static-md -llibvorbis-1.3.2-static-md
                PRE_TARGETDEPS += "$$(ALLEGRO_LIB)/allegro-5.0.6-monolith-static-md.lib"
        }
        else {
                LIBS += -L"$$(ALLEGRO_LIB)" -lallegro-5.0.6-monolith-static-md-debug -llibvorbisfile-1.3.2-static-md-debug -lzlib-1.2.5-static-md-debug -llibogg-1.2.1-static-md-debug -llibFLAC-1.2.1-static-md-debug -lfreetype-2.4.8-static-md-debug -ldumb-0.9.3-static-md-debug -llibvorbis-1.3.2-static-md-debug
                PRE_TARGETDEPS += "$$(ALLEGRO_LIB)/allegro-5.0.6-monolith-static-md-debug.lib"
        }
}
Sinun täytyy vain asettaa järjestelmän ympäristömuuttujiin kaksi arvoa:
  • ALLEGRO_LIB: Täydellinen polku Allegron paketin sisällä olevaan lib-kansioon, esim. H:\computing\allegro\lib
  • ALLEGRO_INCLUDE: Täydellinen polku Allegron paketin sisällä olevaan include-kansioon, esim. H:\computing\allegro\include
Voi olla että olen määritellyt paljon turhia kirjastoja LIBS-riveillä, mutta ainakin saan sillä hommat pyörimään :)
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

VesQ wrote:*loistava selitys*
naputtelija wrote:Proseduurin aloituskohtaa _ZN2sf5ClockC1Ev ei löydy dynaamisesti linkittyvästä kirjastosta sfml-system.dll?
Tuo allegro on kyllä ihan hyvä kirjasto, vaikka onkin c:llä tehty.
Mutta vielä tuohon kysymykseen, niin tuo virhe tulee yleensä, kun dll:llä ja ohjelma on käännetty eri kääntäjillä.
User avatar
esa94
Guru
Posts: 1855
Joined: Tue Sep 04, 2007 5:35 pm

Re: C++ -kysymykset

Post by esa94 »

Latexi95 wrote:vaikka onkin c:llä tehty
wat
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

esa94 wrote:
Latexi95 wrote:vaikka onkin c:llä tehty
wat
Viittaatko siihen "vaikka"-sanaan? Se viittasi lähinnä MaGetzUbin kommentiin C++:lla kirjaston helppoudesta verrattuna C:n kirjastoihin.
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: C++ -kysymykset

Post by koodaaja »

Paljon enemmänhän se on kirjaston toteutuksesta kuin kielestä kiinni. Melkein kaiken oliotyylisen voi tehdä C:llä muuttamalla "olio->metodi(a, b, c)" muotoon "metodi(olio, a, b, c)". Merkkejä tässä on täsmälleen sama määrä ja aivan yhtä selkeitä ovat omasta mielestäni. Namespaceja tai vastaavia voi lähinnä jäädä kaipailemaan.
Untitled.bmp
Member
Posts: 52
Joined: Sat May 12, 2012 7:11 pm
Location: C:/WINDOWS/system32

Re: C++ -kysymykset

Post by Untitled.bmp »

Osaisiko kukaan ehdottaa hyviä kääntäjiä ja editoreita C++:lle? Vaatimukset olisi, että ovat molemmat freewarea tai sharewarea ja, että suht.koht helppokäyttöisiä.
Intel core i7 3960X 3,9ghz 15mb
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Latexi95
Guru
Posts: 1166
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: C++ -kysymykset

Post by Latexi95 »

Untitled.bmp wrote:Osaisiko kukaan ehdottaa hyviä kääntäjiä ja editoreita C++:lle? Vaatimukset olisi, että ovat molemmat freewarea tai sharewarea ja, että suht.koht helppokäyttöisiä.
Suosittelen QtSDK:ta. Siinä tulee mukana kaikki tarvittava.
Post Reply