Šiuo metu esate neprisijungę, laukiama, kol iš naujo prisijungsite prie interneto

Jūsų naršyklė nepalaikoma

Kad galėtumėte naudotis svetaine, turite atnaujinti naršyklę.

Įdiekite naujausią „Internet Explorer“ versiją

LNK2005 klaida įvyksta, kai CRT bibliotekos ir MFC bibliotekos yra susiję neteisinga, kad Visual c ++

SVARBU: šis straipsnis išverstas naudojant „Microsoft“ mašininio vertimo programinę įrangą ir gali būti pataisytas naudojant „Community Translation Framework“ (CTF) technologiją. „Microsoft“ siūlo mašinos išverstus ir po to bendruomenės suredaguotus straipsnius, taip pat žmogaus išverstus straipsnius siekdama suteikti prieigą prie visų savo žinių bazės straipsnių daugeliu kalbų. Mašinos išverstuose ir vėliau paredaguotuose straipsniuose gali būti žodyno, sintaksės ir / arba gramatikos klaidų. „Microsoft“ neatsako už jokius netikslumus, klaidas arba žalą, patirtą dėl neteisingo turinio vertimo arba mūsų klientų naudojimosi juo. Daugiau apie CTF žr. http://support.microsoft.com/gp/machine-translation-corrections.

Spustelėkite čia, norėdami pamatyti šio straipsnio versiją anglų kalba: 148652
Požymiai
Kai C vykdymo laiko (CRT) biblioteka ir Microsoft Foundation Klasę (MFC) bibliotekose yra susiję neteisinga, kad, galite gauti vieną, kad LNK2005 klaidų:
nafxcwd.lib(afxmem.obj): klaida LNK2005:
"negalioja * __cdecl operatorius naujas (unsigned int)" (??2@YAPAXI@Z) jau
apibrėžta LIBCMTD.lib(new.obj)
nafxcwd.lib(afxmem.obj): klaida LNK2005:
"negalioja __cdecl operatorius Delete(Void *) "(??3@YAXPAX@Z) jau yra apibrėžtos
į LIBCMTD.lib(dbgnew.obj)
nafxcwd.lib(afxmem.obj): klaida LNK2005:
"negalioja * __cdecl operatorius naujas (nepasirašytas LC, LC, char const *, int)"
(??2@YAPAXIHPBDH@Z) jau yra apibrėžtos LIBCMTD.lib(dbgnew.obj)
mfcs40d.lib(dllmodul.obj): klaida LNK2005: _DllMain@12 jau yra apibrėžtos
MSVCRTD.Karolis (dllmain.obj)
mfcs42d.lib(dllmodul.obj): klaida LNK2005: _DllMain@12 jau yra apibrėžtos
msvcrtd.lib(dllmain.obj)
Priežastis
CRT bibliotekos naudoja silpnas išorės ryšys naują, Naikinti, ir DllMain funkcijos. MFC bibliotekos taip pat yra naujos, Naikinti, ir DllMain funkcijos. Šios funkcijos reikalauja MFC bibliotekos sietinas prieš CRT bibliotekos yra susijęs.

Sprendimas
Yra du būdai išspręsti šią problemą. Pirmasis sprendimas apima verčia linker susieti bibliotekų teisinga užsakymo. Antrasis sprendimas leidžia jums rasti modulis, sukelia ir problema ir ją ištaisyti.

Pastaba Šie veiksmai yra pagrįsti Visual C ++ 6.0.

Vienas sprendimas: Jėgos Linker saitų bibliotekų teisinga tvarka

  1. Dėl to Projektomeniu, spustelėkite Parametrai.
  2. Į į Parametrus Rodyti kadProjekto parametrai dialogo lange spustelėkite, jei norite pasirinkti projektą konfigūraciją, kuri tampa nuoroda klaidų.
  3. Dėl to Nuoroda pažymėtame lape spustelėkite pasirinkti Įvestiesį į Kategorija pasirinktinio įvedimo laukas.
  4. Į į Ignoruoti bibliotekų dėžė, įterpti (už bibliotekos pavadinimus pvz., Nafxcwd.lib;Libcmtd.lib).

    Pastaba Linker komandų eilutės ekvivalentas /NOD:<library name=""></library>.
  5. Į į Objektas/biblioteka moduliai langelį, Įterpti bibliotekos pavadinimus. Turite įsitikinti, kad šie išvardyti eilės tvarka ir kaip pirmųjų dviejų bibliotekų eilutėje (pvz., Nafxcwd.lib Libcmtd.lib).
Norėdami nustatyti šią parinktį, Visual C ++ .NET, skaityti ir "parametras vaizdo C ++ projekto ypatybes"interneto žinyno temą.

Du tirpalas: Surasti ir ištaisyti problemą modulis

Norėdami peržiūrėti dabartinę biblioteką nuorodą užsakymą, atlikite šiuos veiksmus:
  1. Dėl to Projektomeniu, spustelėkite Parametrai.
  2. Į į Parametrus Rodyti kadProjekto parametrai dialogo lange spustelėkite, jei norite pasirinkti projektą konfigūraciją, kuri tampa nuoroda klaidų.
  3. Dėl to Nuoroda TAB, tipo/ kalbantys: Karolis į į Projekto galimybėslangelį.
  4. Atkurti jūsų projektą. Bibliotekose bus nurodytas pagal išėjimo langas per susiejimo procesą.
Būsena
Tai problema yra dizainas.
Daugiau informacijos
Kai naudojate MFC bibliotekos, turite būti tikri jos yra susijusios, prieš CRT bibliotekos yra susijęs. Jūs galite tai padaryti tikrai kad kiekviename faile projekte yra Msdev\Mfc\Include\Afx.h pirmą kartą, tiesiogiai (#include <Afx.h>) arba netiesiogiai (#include <Stdafx.h>). Į Afx.h įtraukti failą pajėgų teisinga tvarka, pagal bibliotekos, naudojant #pragma komentaras (lib,"<libname>") Direktyvos. </libname></Stdafx.h></Afx.h>

Jei šaltinio failas turi plėtiniu .c arba failą gali, .cpp pratęsimo bet ar negalima naudoti MFC, galite kurti ir įtraukti mažas antraštės failą (Forcelib.h) modulis viršuje. Ši nauja antraštė užtikrina, kad thelibrary kratos nutartis yra teisinga.

Tai nėra Visual C ++ antraštės failą. Norėdami sukurti šį failą, atlikite šiuos veiksmus:
  1. Atidaryti Msdev\Mfc\Include\Afx.h.
  2. Pasirinkite eilutes, tarp #ifndef _AFX_NOFORCE_LIBS ir #endif / /! _AFX_NOFORCE_LIBS.
  3. Nukopijuoti pažymėtą sritį į sistemos Windows mainų sritį.
  4. Sukurkite naują failą.
  5. Įklijuoti iškarpinės turinį į naują failą.
  6. Įrašykite failą kaip Msdev\Mfc\Include\Forcelib.h.

Veiksmus, padėsiančius atkurti problemą, Visual C ++ .NET

  1. Paleisti Microsoft Visual Studio .NET.
  2. Dėl to Failas meniu, taškas įNaujas, tada spustelėkite Projekto.
  3. Spustelėkite Visual C ++ projektai pagalProjektų tipų, tada spustelėkite MFC taikymaspagal Šablonai.
  4. Į į vardas, pavadinimas teksto laukas, tipasQ148652.
  5. Į į Vieta teksto laukas, tipasC:\Test, tada spustelėkite gerai.
  6. Į į MFC taikymo vedlys dialogo lange spustelėkite Taikymo tipas.
  7. Spustelėkite Dialogo pagrindu pagalTaikymo tipas, tada spustelėkite Statiška MFC naudojimas biblioteka pagal MFC panaudojimas.
  8. Spustelėkite Apdaila.
  9. Lange Solution Explorer pagal Šaltinio failusPasirinkite visus tris .cpp failus.
  10. Dešiniuoju pelės mygtuku spustelėkite tris pasirinktus failus, o tada spustelėkitePašalinti.
  11. Dešiniuoju pelės mygtuku spustelėkite Šaltinio failus, nukreipkite žymiklį įPridėti, tada spustelėkite Pridėti naują elementą.
  12. Spustelėkite C ++ failus pagalŠablonai. Į į vardas, pavadinimas teksto laukas, tipasAA. Spustelėkite Atidaryti.
  13. Įklijuokite šį kodą į Aa.cpp failą:
    int test(){new int; return 1;}
  14. Dešiniuoju pelės mygtuku spustelėkite Šaltinio failus, nukreipkite žymiklį įPridėti, tada spustelėkite Pridėti esamą elementą.
  15. Pasirinkite šiuos failus:
    • Q148652.CPP
    • Q148652Dlg.CPP
    • stdafx.CPP
  16. Spustelėkite Atidaryti.
  17. Failus, kuriuos pasirinkote 15 veiksme pasirodo pagalŠaltinio failus.
  18. Pasirinkite visi keturi .cpp failai Šaltinis Failai.
  19. Dešiniuoju pelės mygtuku spustelėkite keturių .cpp failus, kuriuos pasirinkote, ir tada spustelėkite Ypatybės.
  20. Išplėsti Konfigūracijos savybės, ir tada išplėsti C/C ++.
  21. Spustelėkite Sukompiliuota antraštes.
  22. Nustatyti ir Kurti/naudoti sukompiliuota antraštėsturto Nenaudoja Precompiled antraštes. Spustelėkitegerai.
  23. Dėl to Statyti meniu, spustelėkite Atstatyti Tirpalas.
nafxcwd

Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 148652 – Paskutinė peržiūra: 06/07/2013 00:10:00 – Peržiūra: 1.0

  • Microsoft Visual C++ 2008 Express Edition
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • Microsoft Visual C++ .NET 2002 Standard Edition
  • Microsoft Visual C++ .NET 2003 Standard Edition
  • kbsweptvs2008 kbtshoot kbarttypeinf kberrmsg kbprb kbmt KB148652 KbMtlt
Atsiliepimai
ft.com/c.gif?DI=4050&did=1&t=">cript type='text/javascript' src='" + (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>"); > + (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");