أخطاء رابط في Visual C ++ LNK2005، LNK2019 - غير متأكد من السبب

StackOverflow https://stackoverflow.com/questions/904416

سؤال

أحاول بناء رمز من NVIDIA 9.5 SDK لكني أحصل على أخطاء الرابط التالية:

>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)

ليس لدي أي فكرة لماذا أحصل على رعب جيغيسي لأنني متأكدا 99٪ أنا أعطيت أدلة بلدي بشكل صحيح.

على سبيل المثال، واحدة من الوظائف التي لا يمكن العثور عليها هي TextureFactory :: CreateTextoxFromFile حتى الآن لدي الدليل الذي يتم فيه إعلان هذه الوظيفة ومعرفة تم إضافتها بالفعل إلى الدليل التضمين / المصدر في إعدادات Visual C ++.

يبدو أعلى الملف مثل هذا:

#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"

أكثر من ذلك إلى النقطة إذا قلت #Include "texturefactory.h" و #include "texturefactory.cpp" في الجزء العلوي من الملف الذي أحصل عليه هذه الأخطاء، فلا يمكن أن يكون هناك مجال للغموض، ويتم تعريف الوظائف نسخ أساسا + لصق في نفس الملف المصدر الذي يولد خطأ رابط، ومع ذلك، ما زلت أحصل على خطأ الرابط.

هل أطلني شيئا؟

هل كانت مفيدة؟

المحلول

يحدث ذلك بسبب:

1 مصدر. Lib مفقود مثل Tomzx أو Daniel، أو 2. تم تجميعه في إصدار آخر من Visual C محاولة لإنشاء ملفك مثل .c (وليس A.CPP) في المفكرة، ثم تضيف إلى مشروعك ملف .c (مشروع ... أضف إلى المشروع ... ملف)

آسف أنا مكسيكي، أنا لا أتحدث الإنجليزية. سالودوس.

نصائح أخرى

لقد أضفت الملفات في المجلد التضمين / المصدر، ولكن ماذا عن المكتبات؟ يبدو أكثر مثل مشكلة مكتبة لي (مفقود .lib).

ربما تحتاج أيضا إلى سرد تبعياتك في رابط - المدخلات.

يعني LNK2005 عموما أن مكتبات الإضation ليست مرتبطة بشكل صحيح.

من المحتمل أنك نسيت الارتباط بأحد ملفات SDKs Lib. يمكنك تعيين هذا في خصائص المشروع الخاص بك تحت رابط-> إدخال> تبعيات إضافية أو استخدام #pragma التعليق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top