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?

- Rejestracja:ponad 21 lat
- Ostatnio:około 5 godzin
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...

- Rejestracja:ponad 21 lat
- Ostatnio:około 5 godzin
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.
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.