Ich habe log4cplus in VS2012 heruntergeladen und kompiliert. Compilation war in Ordnung (sowohl debuggen und release) Ich habe versucht, es zu verwenden, aber ich bekomme 3 Link Fehler, nichts, was ich versuchte, sie nicht entfernen. ich die gleiche bin mit umfasst vom log4cplus Projekt und die Libs ich zusammengestellt habe (versucht, alle 3 ... Debug-Release und die log4cplusS.liblog4cplus Link-Fehler bei der Verwendung in VS2012
ich immer noch diese:
Fehler LNK2019: nicht aufgelöstes externes Symbol "__declspec (dllimport) Klasse std :: basic_ostringstream, Klasse std :: Allocator> & __cdecl log4cplus :: Details :: get_macro_body_oss (void)" (_ imp get_macro_body_oss @ Detail @ log4cplus @ @YAAAV? $ Basic_ostringstream @ _WU? $ Char_traits @ _W @ std @@ V? $ Zuweiser @ _W @ 2 @@ std @@ XZ) verwiesen in Funktion „int __cdecl Prepare (Klasse std :: basic_string, Klasse std :: Allocator> &, Klasse std :: basic_string, Klasse std :: Allocator> &, Klasse std :: basic_string, Klasse std: : allocator> &, int *, int *, int *) " (? Bereiten Sie @@ YAHAAV? $ basic_string @ DU vor? $ char_traits @ D @ std @@ V? $ Zuweiser @ D @ 2 @@ std @@ 00PAH11 @Z)
Fehler LNK2019: nicht aufgelöstes externes Symbol „__declspec (dllimport) public: statische Klasse log4cplus :: Logger __cdecl log4cplus :: Logger :: getInstance (Klasse std :: basic_string, Klasse std :: Allocator> const &) " (_ imp? GetInstance @ Logger @ log4cplus @@ SA? AV12 @ ABV? $ Basic_string @ _WU? $ Char_traits @ _W @ std @@ V? $ Zuweiser @ _W @ 2 @@ std @@@ Z) in Funktion „int referenzierten __cdecl Prepare (Klasse std :: basic_string, Klasse std :: Allocator> &, Klasse std :: basic_string, Klasse std :: Allocator> &, Klasse std :: basic_string, Klasse std :: Zuweiser> &, int *, int *, int *) " (? Bereiten Sie @@ YAHAAV vor? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ Zuweiser @ D @ 2 @@ std @@ 00PAH11 @ Z)
Was ist los?
Mein Code ist einfach, in meiner dll cav:
in der Spitze der CPP habe ich
static Logger logger;
in einer der Funktion, die ich hinzugefügt haben:
logger = Logger::getInstance(LOG4CPLUS_TEXT("MyDLL"));
LOG4CPLUS_INFO(logger, LOG4CPLUS_TEXT("Prepare Starts"));
Sie haben Recht .... aber warum? – Dani
Seit Visual Studio 2010 (glaube ich) werden alle neuen Projekte mit 'TCHAR' als' wchar_t' (Unicode-Einstellung in der Gruppe Allgemeine Einstellungen) erstellt. Diese Einstellung definiert die Präprozessorsymbole 'UNICODE' und' _UNICODE'. Diese Symbole werden auch von log4cplus verwendet. Wenn du das unbedingt abschalten willst, kannst du das, aber ich würde für alles, was kein Spielzeugprojekt ist, dagegen raten. – wilx
Ja, ich habe die Unicode-Version verwendet, ich könnte sie sowieso brauchen ... nicht für das Protokoll, sondern für den Rest des Projekts ... – Dani