GTKmm dziwne zachowanie string

0

Witam, mam taki problem - pisze sobie takie proste GUI i zauwazylem pewna rzecz, ktora nie wiem jak obejsc mianowicie program wywala mi sie, gdy probuje używać funkcji gtk zwracającej typ std::string - na przyklad Glib::get_current_dir etc. Podobnie jest jak jakas funkcja potrzebuje jako argumentu std::string np otwierajaca obrazek to aplikacja sie wywala tj dostaje jakis tam violation i nic dalej nie idzie zrobic. Co ciekawe w przypadku gdy pisze do typu ustring takie problemu nie ma - teoretycznie wyglada to na jakis balagan z kodowaniem, ktore wystepuje tylko przy std::string, a nie ma tego przy ustring, jednak czesc potrzebnych mi gotowych funkcji gtk uzywa niestety std::string i nie wiem co z tym zrobic. dodam ze pisze w ms visual studio 2012. Czy spotkal sie ktos z was moze z taka sytuacja albo ma pomysl co z tym zrobic mozna?

0

czy biblioteka gtk była skompilowana tą samą wersją kompilatora? jeśli nie, to być może używa innej definicji klasy std::string niż twój program.

przekompiluj bibliotekę.

poszczególne wersje Visuala (2008, 2010, 2012...) mają zupełnie niezgodne ze sobą klasy z STL-a.
GCC też ma swoją implementację.

0

gtk instalowałem binarkę, nie wiem czym to było kompilowane, ale zauważyłem jeszcze jedną rzecz - mianowicie jak chcę otworzyć obrazek

std::string d = "1m.jpg";
            Glib::RefPtr<Gdk::Pixbuf> image = Gdk::Pixbuf::create_from_file(d); 

to w terminalu dostaję taki komunikat:
unhandled exception is signal handler:
domain: g-file-error-quark
code: 17
what : failed to open file '`p\u001f': Invalid Argument

Czyli wyglada jakby traktowal moj plik 1m.jpg jako p\u001f...
0

Jak zmienilem na ms visual studio 2010 to ruszylo, ale niestety nie cieszy mnie to, bo tak czy siak musze uzywac wersji 2012 - wyglada na to, ze ten property sheet ktory mu podpialem jest dla wersji 2010, a dla 2012 takowego w ogole nie ma ;/

0

Nie będzie ci string działał na granicy program–gtk jeśli program jest kompilowany inną wersją Visuala niż GTK.
Jeśli nie możesz znaleźć wersji GTK skompilowanej konkretnie wersją 2012 (tylko tą i żadną inną) to zostaje ci samodzielne przekompilowanie GTK.

1 użytkowników online, w tym zalogowanych: 0, gości: 1