[ Lazar-I @ 26.01.2008. 23:27 ] @
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]
[ NastyBoy @ 27.01.2008. 10:52 ] @
struct S
{
static const int x;
};

const int S::x = 1;

... ostatak programa ...
[ leka @ 07.02.2008. 13:36 ] @
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).