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"'
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
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.
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?