Frage

Ich versuche, Code aus dem nVidia 9.5 SDK zu bauen, aber ich erhalte die folgenden Linkfehler:

>1>NV_D3DCommonDX9U.lib(NV_StringFuncs.obj) : error LNK2005: "class std::basic_istream<char,struct std::char_traits<char> > & __cdecl std::getline<char,struct std::char_traits<char>,class std::allocator<char> >(class std::basic_istream<char,struct std::char_traits<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &)" (??$getline@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@YAAAV?$basic_istream@DU?$char_traits@D@std@@@0@AAV10@AAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@0@@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
1>FogTombScene.obj : error LNK2019: unresolved external symbol "public: struct IDirect3DTexture9 * * __thiscall TextureFactory::CreateTextureFromFile(struct IDirect3DDevice9 *,wchar_t const *,bool)" (?CreateTextureFromFile@TextureFactory@@QAEPAPAUIDirect3DTexture9@@PAUIDirect3DDevice9@@PB_W_N@Z) referenced in function "public: virtual long __thiscall FogTombScene::RestoreDeviceObjects(void)" (?RestoreDeviceObjects@FogTombScene@@UAEJXZ)
1>FogTombScene.obj : error LNK2019: unresolved external symbol "public: long __thiscall LoadXFile::LoadFile(wchar_t const *,bool)" (?LoadFile@LoadXFile@@QAEJPB_W_N@Z) referenced in function "public: virtual long __thiscall FogTombScene::RestoreDeviceObjects(void)" (?RestoreDeviceObjects@FogTombScene@@UAEJXZ)
1>FogTombScene.obj : error LNK2019: unresolved external symbol "public: long __thiscall LoadXFile::Initialize(struct IDirect3DDevice9 *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > (__cdecl*)(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,bool),class TextureFactory * *)" (?Initialize@LoadXFile@@QAEJPAUIDirect3DDevice9@@P6A?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@ABV34@_N@ZPAPAVTextureFactory@@@Z) referenced in function "public: virtual long __thiscall FogTombScene::RestoreDeviceObjects(void)" (?RestoreDeviceObjects@FogTombScene@@UAEJXZ)
1>NV_D3DCommonDX9U.lib(NV_StringFuncs.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall std::locale::facet::_Register(void)" (__imp_?_Register@facet@locale@std@@QAEXXZ) referenced in function "class std::ctype<char> const & __cdecl std::use_facet<class std::ctype<char> >(class std::locale const &)" (??$use_facet@V?$ctype@D@std@@@std@@YAABV?$ctype@D@0@ABVlocale@0@@Z)
1>NV_D3DCommonDX9U.lib(NV_StringFuncs.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<char>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@D@std@@SAIPAPBVfacet@locale@2@@Z) referenced in function "class std::ctype<char> const & __cdecl std::use_facet<class std::ctype<char> >(class std::locale const &)" (??$use_facet@V?$ctype@D@std@@@std@@YAABV?$ctype@D@0@ABVlocale@0@@Z)
1>NV_D3DCommonDX9U.lib(NV_StringFuncs.obj) : error LNK2019: unresolved external symbol "__declspec(dllimport) public: static unsigned int __cdecl std::ctype<unsigned short>::_Getcat(class std::locale::facet const * *)" (__imp_?_Getcat@?$ctype@G@std@@SAIPAPBVfacet@locale@2@@Z) referenced in function "class std::ctype<unsigned short> const & __cdecl std::use_facet<class std::ctype<unsigned short> >(class std::locale const &)" (??$use_facet@V?$ctype@G@std@@@std@@YAABV?$ctype@G@0@ABVlocale@0@@Z)

Ich habe keine Ahnung, warum ich gthese Schrecken gettin bin, weil ich 99% sicher bin, ich habe mein Setup Verzeichnisse richtig.

Zum Beispiel eine der Funktionen nicht TextureFactory finden kann, ist :: CreateTextureFromFile noch ich das Verzeichnis haben, in dem die Funktion deklariert und definiert bereits zum include / Quellverzeichnis in dem Visual C ++ Einstellungen hinzugefügt.

Anfang der Datei sieht wie folgt aus:

#include "nvafx.h"
//#include "NV_D3DCommon\NV_D3DCommonDX9.h"  // include library sub-headers
                                             // and add .lib to linker inputs
//#include "NV_D3DMesh\NV_D3DMesh.h"

//#include "shared\NV_Common.h"
//#include "shared\NV_Error.h"

#include "FogTombScene.h"
#include "ThicknessRenderProperties.h"
#include "ThicknessRenderProperties8BPC.h"
#include "../camera.h"


// When the following two lines are added I get more LNK2005 (understandable) 
// but I also still get the same LNK2019 errors as above
#include "texturefactory.h"
#include "texturefactory.cpp"

Mehr zu dem Punkt, wenn ich sage #include „TextureFactory.h“ und # include „texturefactory.cpp“ am Anfang der Datei, in der ich diese Fehler bin immer dann kann es für Mehrdeutigkeit keinen Raum sein, die Funktionen definiert sind und im Grunde kopieren + in derselben Quelldatei eingefügt die Linker Fehler zu erzeugen, aber ich immer noch die Linker Fehler.

Bin ich mit Blick auf etwas?

War es hilfreich?

Lösung

Das geschieht, weil:

1 Die Quelle der LIB fehlt wie gesagt tomzx oder Daniel, oder 2 Der LIB wurde in einer anderen Version von Visual C kompiliert   Versuchen Sie, Ihre Datei wie ein .c erstellen (KEIN CPP) in Notepad, dann fügen Sie Ihr Projekt die Datei .c (Projekt ... in dem Projekt ... Datei)

Sorry, ich bin mexikanisch, ich spreche kein Englisch. Saludos.

Andere Tipps

Sie haben die Dateien im include / Quellordner hinzugefügt, aber was ist mit den Bibliotheken? Sieht eher wie eine Bibliothek Problem für mich (fehlende LIB).

Vielleicht müssen Sie auch Ihre Abhängigkeiten in Linkers zur Liste - Eingang

.

LNK2005 bedeutet in der Regel, dass zusaetzliche Bibliotheken sind nicht richtig verknüpft.

Sie haben vergessen, wahrscheinlich zu einem der SDKs lib Dateien zu verknüpfen. Sie können unter diese in Ihrer Projekteigenschaft festgelegt Linker-> Input-> zusätzliche Abhängigkeiten oder ein # Pragma Kommentar .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top