Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Zašto mingw3.4.5 neće da linkuje ovaj program?

[es] :: C/C++ programiranje :: Zašto mingw3.4.5 neće da linkuje ovaj program?

[ Pregleda: 2209 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Lazar-I

Član broj: 6950
Poruke: 169
*.ptt.yu.



+727 Profil

icon Zašto mingw3.4.5 neće da linkuje ovaj program?26.01.2008. u 23:27 - pre 197 meseci
Sledeći kod mingw neće da linkuje sa libstdc++ biblioteokom, javlja undefined reference to S::x
Code:

#include <iostream>
#include <map>

struct S
{
    static const int x = 1;
};

using namespace std;

int main(void)
{
    map<int, string> mapa;
    mapa[S::x] = "zdravo svete";
    cout<<mapa[S::x];
    
    return 0;
}


Ako linije 14 i 15 zamenim sa
Code:

    mapa[(int)S::x] = "zdravo svete";
    cout<<mapa[(int)S::x];

onda je prevođenje i linkovanje uspešno.

Najčudniije od svega mi je što primer iz Boost biblioteke (<boost dir>\libs\spirit\example\fundamental\ast_calc.cpp) uspešno linkuje sa libstdc++ bibliotekom a sa STLport bibliotekom javlja undefined reference to calculator::integerID, factorID, termID, expressionID. Problematičan deo koda u ovom primeru je
Code:

            std::map<parser_id, std::string> rule_names;
            rule_names[calculator::integerID] = "integer";
            rule_names[calculator::factorID] = "factor";
            rule_names[calculator::termID] = "term";
            rule_names[calculator::expressionID] = "expression";

Posle konverzije u int uspeva i linkovanje sa STLport bibliotekom. Ne mogu da primetim razliku između ovog koda iz boost biblioteke i onog koji sam gore naveo. Zašto ovaj kod uspešno linkuje sa libstdc++ a neće sa STLport i zašto gore navedeni kod neće da linkuje ni sa libstdc++ bibliotekom?

[Ovu poruku je menjao Lazar-I dana 27.01.2008. u 00:43 GMT+1]
 
Odgovor na temu

NastyBoy
Bojan Nastic
UK

Član broj: 12041
Poruke: 895
*.bethere.co.uk.



+4 Profil

icon Re: Zašto mingw3.4.5 neće da linkuje ovaj program?27.01.2008. u 10:52 - pre 197 meseci
struct S
{
static const int x;
};

const int S::x = 1;

... ostatak programa ...
 
Odgovor na temu

leka
Dejan Lekić
senior software engineer, 3Developers
Ltd.
London, UK

Član broj: 234
Poruke: 2534
*.dynamic.dsl.as9105.com.

Sajt: dejan.lekic.org


+2 Profil

icon Re: Zašto mingw3.4.5 neće da linkuje ovaj program?07.02.2008. u 13:36 - pre 197 meseci
Lazare, najverovatnije problem u kompajleru. Preporucujem toplo da skines 4.1 verziju kompajlera sa MinGW sajta (zapravo SourceForge-a), ili da lepo sebi instaliras Linux i cross-kompajliras za Winblows (ili bilo sta drugo).
Dejan Lekic
software engineer, MySQL/PgSQL DBA, sysadmin
 
Odgovor na temu

[es] :: C/C++ programiranje :: Zašto mingw3.4.5 neće da linkuje ovaj program?

[ Pregleda: 2209 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.