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

Straipsni? vertimai Straipsni? vertimai
Straipsnio ID: 148652 - Per?i?r?ti ?iame straipsnyje minimus produktus.
I?pl?sti visus | Sutraukti visus

?iame puslapyje

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.

Savyb?s

Straipsnio ID: 148652 - Paskutin? per?i?ra: 2013 m. bir?elio 7 d. - Per?i?ra: 1.0
Taikoma:
  • 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
Rakta?od?iai: 
kbsweptvs2008 kbtshoot kbarttypeinf kberrmsg kbprb kbmt KB148652 KbMtlt
Atliktas automatinis vertimas
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

Pateikti atsiliepim?

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com