Fehler LNK2019: nicht aufgelöstes externes symbol "__declspec(dllimport) private
Das Projekt läuft korrekt unter VC6.0, aber nachdem ich aktualisiert es unter VS2012, die folgenden Fehler auftreten:
revel.lib(BaseEncoder.obj) : error LNK2019: unresolved external symbol
"__declspec(dllimport) private: void __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::_Eos(unsigned int)"
(__imp_?_Eos@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AAEXI@Z) referenced in function
"protected: virtual void __thiscall Revel_BaseEncoder::Reset(void)" (?Reset@Revel_BaseEncoder@@MAEXXZ)
Kann mir jemand helfen mit diesem problem? Vielen Dank!
können Sie fügen Sie Ihren code so, ich kann das problem reproduzieren auf meinem Rechner? Nur aus der Spitze von meinem Kopf haben Sie überprüft Ihre header/libs?
Ich glaube, Sie brauchen, um wieder aufzubauen
Ich weiß nicht, wie Sie die Neuerstellung
meine Vermutung ist, dass die revel-lib wurde gegeben zu ihm in einem binären format, sondern als Quelle, damit der Wiederaufbau vielleicht nicht eine Lösung für ihn
das kann bedeuten, er ist fest mit VC6. Allerdings, wenn
Ich glaube, Sie brauchen, um wieder aufzubauen
revel.lib
mit VS 2012.Ich weiß nicht, wie Sie die Neuerstellung
revel.lib
- ich weiß nicht, was es ist. Die Fehlermeldung zeigt an, dass revel.lib
will etwas von der std:string
Klasse Umsetzung, und MSVC C++ runtime library nicht rückwärts/vorwärts kompatibel im Allgemeinen. Die std::string::_Eos()
Umsetzung-detail-Funktion wurde zuletzt enthalten in der C++ - Laufzeit als eine exportierte Funktion in VS 2008. Die revel
Bibliothek offenbar muss gebaut werden, gegen die C++ - Bibliothek Implementierung in VS 2012.meine Vermutung ist, dass die revel-lib wurde gegeben zu ihm in einem binären format, sondern als Quelle, damit der Wiederaufbau vielleicht nicht eine Lösung für ihn
das kann bedeuten, er ist fest mit VC6. Allerdings, wenn
revel.lib
ist der "Wirklich Einfachen Video-Encoding-Bibliothek" (revel.sourceforge.net), dann die Quelle wieder verfügbar ist. Bedeutet nicht, dass der Umbau ein Kinderspiel sein, es sollte aber möglich sein.InformationsquelleAutor user1964417 | 2013-01-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wahrscheinlich ist es, weil man eine Bibliothek gebaut, mit Abhängigkeiten, die für eine ältere version von stl als das, was Sie derzeit haben.
Sie können festlegen, dass der compiler die Verwendung der alten toolchain aus den Projekt-Eigenschaften, so dass Sie immer noch mit VS 2012 und bekommen es zu kompilieren, sofern Sie noch die alten visual studio installiert.
BEARBEITEN:ändern Sie die Plattform-toolset, gehen Sie auf Projekt-Eigenschaften->allgemein, es sollte eine option namens Platform Toolset gibt es eine dropdown-Liste, Sie können wählen Sie die ältere version von dem toolchain wie pro die online msdn-Dokumentation (hier der link)
Ich bin nicht sicher, ob VS 6.0 erscheint in dem besagten dropdown-Liste auswählen, aber wenn es nicht funktioniert, können Sie eine Methode finden, es zu ändern sich hier
Sie könnten in der Lage sein, erstellen Sie Ihre eigenen "Platform Toolset" Konfiguration für Gebäude mit VC6 innen VS 2012. Siehe blogs.msdn.com/b/vcblog/archive/2009/12/08/... zusätzlich zu dem link in Radu ' s Antwort. Eine vielleicht einfachere Lösung könnte sein, einfach ein makefile-Projekt in VS 2012 verwendet die VC6-tools - VC6 wird auch hilfreich ein makefile erzeugen für Sie aus der VC6-Projekt (ein feature, das MS entfernt von allen neueren Versionen von VC++).
So schlechte Lösung, wenn ich Sie nur installiert haben 2013 ? oder 2015 .. bitte, brauche ich nicht zu installieren Versionen Alter 2012/11/10/09....1990 ein Programm .
Sie müssen diese Einstellung nur, wenn Sie nicht den Quellcode zu haben, nur eine Bibliothek, die kompiliert wurde mit einer älteren version der STL. Wenn Sie eine Bibliothek haben, ist für die alte version erstellt und Sie speziell benötigen, um zu verwenden, die Bibliothek, dann hast du leider installieren die version von VS, die verwendet wurde, um es zu bauen, so haben Sie die gleiche toolchain
Ich bin mit den Programmen der letzten generation C ++, ich werde nicht ein Projekt gefährdet, einfach, indem Sie unten eine version.Ich werde einen anderen Weg finden
InformationsquelleAutor Radu Chivu