Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Solved Błąd kompilacji "wstring does not name a type"
#1
0
Nie jestem programistą c/c++ ale trochę bawię się, przede wszystkim cross-kompilując różne rzeczy na taką jedną dość leciwą architekturę.
I pytanie, jest sobie kawałek kodu jak poniżej, który podczas kompilacji wyrzuca błąd "'wstring' in namespace 'std' does not name a type"
W sieci porady jakie znalazłem, to to, że brak załączonego nagłówka string, ale jak widać w poniższym kodzie, jest on załączany. 
Ma ktoś pomysł o co chodzi, i co w ogóle oznacza "blabla does not name a type" ( to jakieś coś w stylu "undefined variable" czy coś? )


Kod:
#ifndef STRING_H
#define STRING_H

#include "exports.h"
#include "ie_types.h"

#include <cstring>
#include <string>

#ifdef HAVE_CONFIG_H
#include <config.h>
#endif

#ifndef WIN32
# define stricmp strcasecmp
# define strnicmp strncasecmp
#endif

#define WHITESPACE_STRING L"\n\t\r "

namespace GemRB {

//typedef std::basic_string<ieWord> String;
typedef std::wstring String;
// String creators
GEM_EXPORT String* StringFromCString(const char* string);
GEM_EXPORT char* MBCStringFromString(const String& string);

// String manipulators
GEM_EXPORT void StringToLower(String& string);
GEM_EXPORT void StringToUpper(String& string);
GEM_EXPORT void TrimString(String& string);

/* this function will work with pl/cz special characters */

extern unsigned char pl_uppercase[256];
extern unsigned char pl_lowercase[256];

GEM_EXPORT void strnlwrcpy(char* d, const char *s, int l, bool pad = true);
GEM_EXPORT void strnuprcpy(char* d, const char *s, int l);
GEM_EXPORT void strnspccpy(char* d, const char *s, int l, bool upper = false);
GEM_EXPORT int strlench(const char* string, char ch);

}

#ifndef HAVE_STRNLEN
GEM_EXPORT int strnlen(const char* string, int maxlen);
#endif
#ifndef HAVE_STRLCPY
GEM_EXPORT size_t strlcpy(char *d, const char *s, size_t l);
#endif

#ifndef WIN32
GEM_EXPORT char* strlwr(char* string);
#endif

#endif
Odpowiedz
#2
1
Better response on post RE: Błąd kompilacji &quot;wstring does not name a type&quot;Coś tam w googlach piszą aby nie używać std::wstring, na Linuksach i w ogóle.
Spróbuj z tym co masz powyżej, nie wiem czyja to wstawka, czy Twoja czy autora kodu, ale może ma to na takie okazje.
Kod:
typedef std::basic_string<ieWord> String;
//typedef std::wstring String;
Odpowiedz
#3
0
O kurde, sierota jestem, już było chyba za późno dla mnie na uważną analizę, bo nie zauważyłem tej wykomentowanej piętro wyżej deklaracji nie używającej wstring'a.
Teraz kompiluje się.
A co do wstring'a, to tak, czytałem, że to w sumie jakieś dziwactwo, ale już wcześniej go używałem i działało bez problemu, więc się zdziwiłem jak mi wczoraj nie chciał tego kawałka skompilować.
Dzięki.
Odpowiedz
#4
0
Oznaczam wątek jako rozwiązany.
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 1 gości