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?
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ę.
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...
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 ;/
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.