Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » c_str() linker error

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
05.01.2007, 11:03 Uhr
Feuer



Hallo Jungs,
ich habe folgenden linker error wenn ich ein c_str() benutze

error LNK2001: unresolved external symbol "__declspec(dllimport) char const `private: static char const * __cdecl std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Nullstr(void)'::`2'::_C" (__imp_?_C@?1??_Nullstr@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@CAPBDXZ@4DB)

das ein lib fehlt ist mir klar, weiß jemand zufällig welche lib ich für c_str() brauche?

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
05.01.2007, 11:13 Uhr
J-jayz-Z
Perl Crack ala Carte
(Operator)


c_str() benötigt keine lib (außer libstd++, die aber bereits genutzt werden sollte ). Das ist IMHO nur eine Funktion, die dir der Datentyp std::string bereitstellt, um es in ein char* zu konvertieren. Wenn du Code postest, könnte man dir evtl. besser helfen bei dem Problem.
--
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="66756e2d736f66742e6465"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
06.01.2007, 15:01 Uhr
Feuer




C++:
test = new string;
*test = "hallo";    
printf("Hier sollte jetzt was stehen: %c",test->c_str());



wenn ich den code so mache:


C++:
test = new string;
*test = "hallo";    



kommt beim linker keine fehlermeldung!

Habe ich irgendwas falsch gemacht, oder sonst was? Habe keine Idee...

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.01.2007, 15:55 Uhr
Uwe
C/C++ Master
(Administrator)


Hallo,
Ist "test" als Zeiger deklariert?
Warum %c IMO sollte das %s sein...

C++:
string *test = new string; // oder string *test=new string("Hallo");
*test="Hallo";
printf("Hier sollte jetzt was stehen: %s",test->c_str());


--
"Es ist schwierig, ein Programm wirklich idiotensicher zu machen, weil Idioten so genial sind."

Bis dann...
Uwe

Dieser Post wurde am 06.01.2007 um 15:59 Uhr von Uwe editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.01.2007, 17:23 Uhr
Feuer



jo, ist als Zeiger deklariert sonst gäbe es ja schon compiler error.
Das %c war ein nebenbei fehler ändert ja aber trotzdem nichts am problem, das der Linker error kommt.

Achja, ich sollte vielleicht erwähnen das ich die msvcrt.lib ignoriere, da sie mit einer andere lib "kollidiert":

MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'msvcrt.lib' conflicts with use of other libs; use /NODEFAULTLIB:library

könnte das vielleicht das Problem sein?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.01.2007, 10:45 Uhr
Th




Zitat von Verfasser:

könnte das vielleicht das Problem sein?


Ja, genau. Du mußt schon eine Lib angeben, in der die Standard-Visual C++ Runtime Funktionen (msvcrt) enthalten sind.

Der Konflikt entsteht durch Einbinden von Debug und Release-Versionen derselben Lib (diese Warnung kannst du meistens ignorieren).
In diesen Fall ist anscheinend sowohl die msvcrt.lib (Release-version) als auch die msvcrtd.lib (Debug-Version) eingebunden.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.01.2007, 13:10 Uhr
Feuer



naja wenn ich die debug version ignoriere habe ich jede menge andere linker error
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.01.2007, 14:15 Uhr
Feuer



habe ein interessantes phämomen entdeckt.
Wenn ich bei C/C++ in den properties dort bei Optimzation auf Disabled stelle, dann gehts.
Warum und was hat das Optimzation zu bedeuten?

Gruß
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: