Error lnk2005 already defined in libcmtd lib

I have a Visual studio 2005 solution that has two projects. One is a static library and the other is a executable used to test the features in the static library. The static library uses MFC. I got...

I have a Visual studio 2005 solution that has two projects. One is a static library and the other is a executable used to test the features in the static library. The static library uses MFC. I got the following errors when I built the solution.

uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??    3@YAXPAX@Z) already defined in LIBCMTD.lib(dbgdel.obj)
uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) already defined in libcpmtd.lib(newaop.obj)
uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) already defined in LIBCMTD.lib(delete2.obj)

I do not know how to overcome this. Can some one please explain why this error is occuring. Any explanation that gives an overview of .lib files linkage will be highly appreciated.

Helen's user avatar

Helen

81k14 gold badges227 silver badges284 bronze badges

asked Jul 18, 2009 at 0:52

3

The CRT libraries use weak external linkage for the new, delete, and DllMain functions. The MFC libraries also contain new, delete, and DllMain functions. These functions require the MFC libraries to be linked before the CRT library is linked.
http://support.microsoft.com/kb/148652

Solution based on VS2005 (Replace Nafxcwd.lib with Uafxcwd.lib for ~VS2013)

go to project>properties>configuration properties>linker>input

add to «Additional dependency» -> Nafxcwd.lib Libcmtd.lib

add to «ignore specific library» -> Nafxcwd.lib;Libcmtd.lib

order of libraries is important( Nafxcwd.lib;Libcmtd.lib).

Enigma's user avatar

Enigma

1,2373 gold badges20 silver badges51 bronze badges

answered Nov 16, 2009 at 10:50

ali's user avatar

aliali

7791 gold badge5 silver badges3 bronze badges

2

One thing to try is to make sure you have:

#include "stdafx.h"

as the first line in your .cpp files. I’m sure that’s not the answer in all cases, but it made the identical error go away in my case.

answered Oct 6, 2011 at 4:12

Andrew Jens's user avatar

Andrew JensAndrew Jens

1,03215 silver badges16 bronze badges

3

I meet this problem in a MFC solution of Visual Studio 2010, while changing Use MFC in a Shared DLL into Use MFC in a Static Library in Project -> Properties -> Configuration Properties -> General.

I solve the problem by the following ways, please locate Project -> Properties -> Configuration Properties -> Linker -> Input at first.

In Debug mode:

  • Add uafxcwd.lib;Libcmtd.lib in Additional Dependencies.
  • Add uafxcwd.lib;Libcmtd.lib in Ignore Specific Default Libraries.

In Release mode:

  • Add uafxcw.lib;Libcmt.lib in Additional Dependencies.
  • Add uafxcw.lib;Libcmt.lib in Ignore Specific Default Libraries.

Notice:

  1. Don’t miss the ; between the two .lib files.
  2. A suffix -d must be added in the files in Debug mode.

answered Nov 9, 2018 at 8:53

Cipher Saw's user avatar

Cipher SawCipher Saw

1511 gold badge2 silver badges7 bronze badges

be sure that you have #include <afx.h> in "stdafx.h" BEFORE other includes like #include <string>

answered Jun 20, 2017 at 11:35

user2199593's user avatar

user2199593user2199593

3816 silver badges16 bronze badges

in config linker input

  • In additional dependicies put uafxcw.lib;LIBCMT.lib
  • In Ignore specific put put uafxcw.lib;LIBCMT.lib

answered Mar 18, 2014 at 9:36

eit's user avatar

eiteit

511 silver badge1 bronze badge

Make sure the C++ runtime library that you are linking with is the same on your static library as well as your executable. Check your project properties C/C++->Code generation->runtime library settings.

answered Jul 18, 2009 at 0:59

msvcyc's user avatar

msvcycmsvcyc

2,5694 gold badges24 silver badges30 bronze badges

Typo. One stupid way you got that is instead of include the header, you inlucde the cpp.
e.g.

#include <myclass.cpp> //should be #include <myClass.h>

answered Apr 27, 2012 at 15:49

RoundPi's user avatar

RoundPiRoundPi

5,7597 gold badges48 silver badges75 bronze badges

1

First, libcmtd.lib is for a debug version and libcmt.lib is for production. Double-check that you’re not including both. One place to check is the «Command Line» section of the Configuration Properties/Linker project properties.

If you go to the properties for the project, and open up the Configuration Properties/Linker/Input section, you can «Ingore Specific Library»…try listing libcmtd.lib in that field.

answered Jul 18, 2009 at 1:04

Mark Laff's user avatar

Mark LaffMark Laff

3074 silver badges17 bronze badges

For me, I have a static library compiled with _CRTDBG_MAP_ALLOC, and the application not compiled with _CRTDBG_MAP_ALLOC, I was receiving then LNK2005. I’ve changed the application to compile with _CRTDBG_MAP_ALLOC, and the LNK2005 disappear.

answered Mar 3, 2015 at 15:02

boutinr's user avatar

Got rid of the problem

uafxcwd.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned __int64)"
  • In additional dependicies put uafxcw.lib.
  • In Ignore specific put put uafxcw.lib.

Mad Physicist's user avatar

Mad Physicist

104k25 gold badges177 silver badges257 bronze badges

answered Apr 7, 2017 at 17:59

евгений соснин's user avatar

I had created two fresh projects with VS2017, one was working the other not, so I compared what was the difference. The one working was created with
File > New Project > Visual C++ > MFC/ATL > MFC Application
the one not working was created with
File > New Project > Visual C++ > Windows Desktop > Windows Desktop Wizard
then adding MFC. In both cases I was using MFC as static lib. I had figured out two fixes. But before that we have to add imports because the second project had NONE!

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions
#include <afxdisp.h>        // MFC Automation classes

Now either of the two fixes worked for me:

  1. Project > Properties > Configuration Properties > General > Use of MFC set it to use in a Shared DLL, this should also automatically set C/C++ > Code Generation > Runtime Library to Multi-threaded debug dll /MDd make sure it indeed did that.
    Try compile now, for me it worked.
  2. I noticed the working project had some imports in stdafx.h, I copied them into pch.h in the other project, it worked.(Keeping the properties unchanged, so static lib was used). The code copied was this:
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

// turns off MFC's hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS
#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions


#include <afxdisp.h>        // MFC Automation classes

The other solutions changing Linker settings I tried them but they did not work.
I would appreciate if somebody knows why my solution works, it is weird, why including those headers in pch.h solves a linker issue whereas including those same headers anywhere else triggers that error??

answered Apr 28, 2019 at 10:13

Melardev's user avatar

MelardevMelardev

1,05310 silver badges20 bronze badges

1

Check the manifest file of both projects, make sure that they are linking the same version of the standard library. Most likely they are not, check the properties->code generation->standard library linking.

answered Jul 18, 2009 at 0:59

DeusAduro's user avatar

DeusAduroDeusAduro

5,8715 gold badges28 silver badges36 bronze badges

I also had a similar problem. The link given by Donnie explains the the reason. The solution was to look at the error messages and then removing those libs involved and adding those libs in the order of MFC libs first and then CRT libs.

The way to do that in vs2008 is given by ali.

answered May 10, 2013 at 15:50

user36476's user avatar

I will also add that if you have replaced the new/delete operators (and if so, please do the array and the scalar both), you may need to tag them as __forceinline so that the obj doesn’t collide with the lib.

For example, I did these to force aligned allocations and had the same trouble until I did that:

__forceinline void * operator new(size_t size)
{
    return _aligned_malloc(size, 16);
}
__forceinline void operator delete(void* ptr)
{
    _aligned_free(ptr);
}
__forceinline void * operator new [](size_t size)
{
    return _aligned_malloc(size, 16);
}
__forceinline void operator delete [](void* ptr)
{
    _aligned_free(ptr);
}

answered Aug 15, 2015 at 0:49

Dave's user avatar

DaveDave

1,49115 silver badges31 bronze badges

1

A header file declared and defined a variable. Possible solutions include:
Declare the variable in .h: extern BOOL MyBool; and then assign to it in a .c or .cpp file: BOOL MyBool = FALSE;.
Declare the variable static.
Declare the variable selectany.

https://msdn.microsoft.com/en-us/library/72zdcz6f.aspx

answered Jul 5, 2017 at 7:08

usman chaudhry's user avatar

For me the problem was solved by changing

Project -> Properties -> Configuration Properties -> General: Use of
MFC = Use MFC in a Shared DLL

Before it was set to «Use Standard Windows Libraries»

Additionally I had to set the /MD option under

Project -> Properties -> C/C++ -> Code Generation : Runtime Library =
Multi-threaded DLL (/MD)

answered Aug 31, 2017 at 7:21

flexo's user avatar

flexoflexo

1,1191 gold badge9 silver badges14 bronze badges

Another possible cause that I ran across while searching for this answer:

I accidentally left an #include "StdAfx.h" line at the top of a .cpp file that I moved from the application (which uses precompiled headers) into a shared static library (which doesn’t use precompiled headers).

answered Aug 13, 2021 at 16:28

Novicaine's user avatar

Got errors after applying Cipher Saw’s solution to vs2015

1>afxnmcdd.lib(wincore2.obj) : error LNK2005: "void __stdcall DDX_Control(class CDataExchange *,int,class CWnd &)" (?DDX_Control@@YGXPAVCDataExchange@@HAAVCWnd@@@Z) already defined in uafxcwd.lib(wincore2.obj)
1>afxnmcdd.lib(wincore2.obj) : error LNK2005: "public: int __thiscall CWnd::ExecuteDlgInit(void *)" (?ExecuteDlgInit@CWnd@@QAEHPAX@Z) already defined in uafxcwd.lib(wincore2.obj)
1>afxnmcdd.lib(wincore2.obj) : error LNK2005: "public: void __thiscall CMFCDynamicLayout::GetHostWndRect(class CRect &)const " (?GetHostWndRect@CMFCDynamicLayout@@QBEXAAVCRect@@@Z) already defined in uafxcwd.lib(wincore2.obj)
1>afxnmcdd.lib(afxctrlcontainer2.obj) : error LNK2005: "void __cdecl AfxRegisterMFCCtrlClasses(void)" (?AfxRegisterMFCCtrlClasses@@YAXXZ) already defined in uafxcwd.lib(afxctrlcontainer2.obj)
1>afxnmcdd.lib(afxctrlcontainer2.obj) : error LNK2005: "protected: void __thiscall CMFCControlContainer::PreUnsubclassControl(class CWnd *)" (?PreUnsubclassControl@CMFCControlContainer@@IAEXPAVCWnd@@@Z) already defined in uafxcwd.lib(afxctrlcontainer2.obj)
1>afxnmcdd.lib(afxctrlcontainer2.obj) : error LNK2005: "public: int __thiscall CMFCControlContainer::SubclassDlgControls(void)" (?SubclassDlgControls@CMFCControlContainer@@QAEHXZ) already defined in uafxcwd.lib(afxctrlcontainer2.obj)

Was able to fix them by changing libs list from uafxcw.lib;Libcmt.lib to afxnmcdd.lib;uafxcwd.lib;Libcmtd.lib (debug unicode build)

answered Feb 14, 2022 at 10:33

Александр Архипов's user avatar

  • Remove From My Forums
  • Question

  • Hi people!

    I’ve got issues when trying to compile an opensource game (SuperTuxKart).

    I work on VC9 (Visual C++ 2008) on Vista.

    The errors I get are:

    1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __aligned_malloc already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __aligned_free already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(tolower.obj) : error LNK2005: _tolower already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(setlocal.obj) : error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(setlocal.obj) : error LNK2005: _setlocale already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(sprintf.obj) : error LNK2005: _sprintf already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(vsprintf.obj) : error LNK2005: _vsprintf already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)
    1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
    1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
    1>LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
    1>LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(atox.obj) : error LNK2005: _atoi already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
    1>LIBCMTD.lib(errmode.obj) : error LNK2005: ___set_app_type already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(printf.obj) : error LNK2005: _printf already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(strtol.obj) : error LNK2005: _strtol already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(_file.obj) : error LNK2005: ___iob_func already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush already defined in MSVCRTD.lib(MSVCR90D.dll)
    1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>LINK : warning LNK4098: defaultlib 'LIBCMTD' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>./../../../supertuxkart_d.exe : fatal error LNK1169: one or more multiply defined symbols found

    I saw on some forum that it was due to the Runtime Library. I then changed the latter from «Multi-threaded Debug DLL» to «Multi-threaded Debug». The errors I then got were:

    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __wassert already defined in LIBCMTD.lib(wassert.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __aligned_malloc already defined in LIBCMTD.lib(dbgheap.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: __aligned_free already defined in LIBCMTD.lib(dbgheap.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _sprintf already defined in LIBCMTD.lib(sprintf.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _printf already defined in LIBCMTD.lib(printf.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strncpy already defined in LIBCMTD.lib(strncpy.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _perror already defined in LIBCMTD.lib(perror.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _abort already defined in LIBCMTD.lib(abort.obj)
    1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
    1>MSVCRTD.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _isspace already defined in LIBCMTD.lib(_ctype.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fprintf already defined in LIBCMTD.lib(fprintf.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: ___iob_func already defined in LIBCMTD.lib(_file.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fopen already defined in LIBCMTD.lib(fopen.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fgetc already defined in LIBCMTD.lib(fgetc.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _fclose already defined in LIBCMTD.lib(fclose.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _setvbuf already defined in LIBCMTD.lib(setvbuf.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _freopen already defined in LIBCMTD.lib(freopen.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _exit already defined in LIBCMTD.lib(crt0dat.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _strrchr already defined in LIBCMTD.lib(strrchr.obj)
    1>MSVCRTD.lib(MSVCR90D.dll) : error LNK2005: _atoi already defined in LIBCMTD.lib(atox.obj)
    1>LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
    1>./../../../supertuxkart_d.exe : fatal error LNK1169: one or more multiply defined symbols found

    What could I do to solve that problem?…

    Cheers in advance,

    Julien.

Answers

  • I finally managed to build the whole solution!

    The problem was actually due to the fact that I had compiled the PLIB library in Debug mode when it should obviously have been done in Release mode…

    So, everything is fine now. And can build and run it with no problems.

    Thank you very well for all your replies anyway. I’ve learned a few things about compilation in C++ thanks to you. So thank you again for your time.

    Cheers,

    Julien.

    • Marked as answer by

      Saturday, August 21, 2010 9:54 AM

The issue is still there in the 1.6.0 version.

Steps to reproduce:
1. downloaded the googletest 1.6.0 version
2. converted the project to VS2008 and built it
3. build my test project with /MTd, linking to gtestd.lib and gtest_maind.lib
4. got errors:

Linking...
msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall 
std::basic_stringstream<char,struct std::char_traits<char>,class 
std::allocator<char> >::basic_stringstream<char,struct 
std::char_traits<char>,class std::allocator<char> >(int)" 
(??0?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@H@Z) 
already defined in gtestd.lib(gtest-all.obj)
msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: void __thiscall 
std::basic_stringstream<char,struct std::char_traits<char>,class 
std::allocator<char> >::`vbase destructor'(void)" 
(??_D?$basic_stringstream@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEXXZ) 
already defined in gtestd.lib(gtest-all.obj)
msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: char const * __thiscall 
std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> 
>::c_str(void)const " 
(?c_str@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QBEPBDXZ) 
already defined in gtestd.lib(gtest-all.obj)
msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall 
std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> 
>::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> 
>(void)" 
(??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) 
already defined in gtestd.lib(gtest-all.obj)
msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: class std::locale::facet * 
__thiscall std::locale::facet::_Decref(void)" 
(?_Decref@facet@locale@std@@QAEPAV123@XZ) already defined in 
gtestd.lib(gtest-all.obj)
libcpmtd.lib(ios.obj) : error LNK2005: "private: static void __cdecl 
std::ios_base::_Ios_base_dtor(class std::ios_base *)" 
(?_Ios_base_dtor@ios_base@std@@CAXPAV12@@Z) already defined in 
msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(ios.obj) : error LNK2005: "public: static void __cdecl 
std::ios_base::_Addstd(class std::ios_base *)" 
(?_Addstd@ios_base@std@@SAXPAV12@@Z) already defined in 
msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(locale0.obj) : error LNK2005: "void __cdecl _AtModuleExit(void 
(__cdecl*)(void))" (?_AtModuleExit@@YAXP6AXXZ@Z) already defined in 
msvcprtd.lib(locale0_implib.obj)
libcpmtd.lib(locale0.obj) : error LNK2005: __Fac_tidy already defined in 
msvcprtd.lib(locale0_implib.obj)
libcpmtd.lib(locale0.obj) : error LNK2005: "private: static void __cdecl 
std::locale::facet::facet_Register(class std::locale::facet *)" 
(?facet_Register@facet@locale@std@@CAXPAV123@@Z) already defined in 
msvcprtd.lib(locale0_implib.obj)
libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class 
std::locale::_Locimp * __cdecl std::locale::_Getgloballocale(void)" 
(?_Getgloballocale@locale@std@@CAPAV_Locimp@12@XZ) already defined in 
msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(locale0.obj) : error LNK2005: "private: static class 
std::locale::_Locimp * __cdecl std::locale::_Init(void)" 
(?_Init@locale@std@@CAPAV_Locimp@12@XZ) already defined in 
msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl 
std::_Locinfo::_Locinfo_ctor(class std::_Locinfo *,class 
std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> 
> const &)" 
(?_Locinfo_ctor@_Locinfo@std@@SAXPAV12@ABV?$basic_string@DU?$char_traits@D@std@@
V?$allocator@D@2@@2@@Z) already defined in msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(locale0.obj) : error LNK2005: "public: static void __cdecl 
std::_Locinfo::_Locinfo_dtor(class std::_Locinfo *)" 
(?_Locinfo_dtor@_Locinfo@std@@SAXPAV12@@Z) already defined in 
msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall 
std::_Lockit::_Lockit(int)" (??0_Lockit@std@@QAE@H@Z) already defined in 
msvcprtd.lib(MSVCP90D.dll)
libcpmtd.lib(xlock.obj) : error LNK2005: "public: __thiscall 
std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in 
msvcprtd.lib(MSVCP90D.dll)
LIBCMTD.lib(_file.obj) : error LNK2005: ___iob_func already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(osfinfo.obj) : error LNK2005: __open_osfhandle already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(dosmap.obj) : error LNK2005: __errno already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(fflush.obj) : error LNK2005: _fflush already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(lconv.obj) : error LNK2005: _localeconv already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(crt0dat.obj) : error LNK2005: _exit already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(crt0dat.obj) : error LNK2005: __exit already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(mlock.obj) : error LNK2005: __lock already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(mlock.obj) : error LNK2005: __unlock already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined 
in MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(stricmp.obj) : error LNK2005: __stricmp already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" 
(?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(sprintf.obj) : error LNK2005: _sprintf_s already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(getenv.obj) : error LNK2005: _getenv already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(strtol.obj) : error LNK2005: _strtol already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(strtoq.obj) : error LNK2005: __strtoui64 already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(vsnprnc.obj) : error LNK2005: __vsnprintf_s already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(printf.obj) : error LNK2005: _printf already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LIBCMTD.lib(vprintf.obj) : error LNK2005: _vprintf already defined in 
MSVCRTD.lib(MSVCR90D.dll)
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; 
use /NODEFAULTLIB:library
C:XXXX : fatal error LNK1169: one or more multiply defined symbols found

Error executing link.exe (tool returned code: 1169)

17 ответов

В библиотеках CRT используется слабое внешнее соединение для новых, удаленных и DllMain-функций. Библиотеки MFC также содержат новые, удаленные и DllMain функции. Эти функции требуют, чтобы библиотеки MFC связывались до того, как библиотека CRT была связана.
http://support.microsoft.com/kb/148652

Решение на основе VS2005 (замените Nafxcwd.lib на Uafxcwd.lib для ~ VS2013)

перейти к проекту > свойствa > свойства конфигурации > компоновщик > ввод

добавить в «Дополнительная зависимость» → Nafxcwd.lib Libcmtd.lib

добавить в «игнорировать определенную библиотеку» → Nafxcwd.lib; Libcmtd.lib

порядок библиотек важен (Nafxcwd.lib; Libcmtd.lib).

ali
16 нояб. 2009, в 10:50

Поделиться

Одна вещь, которую нужно попробовать — убедиться, что у вас есть:

#include "stdafx.h"

как первая строка в ваших .cpp файлах. Я уверен, что это не ответ во всех случаях, но он сделал идентичную ошибку в моем случае.

Andrew Jens
06 окт. 2011, в 06:05

Поделиться

в входе компоновщика конфигурации

  • В дополнительных зависимостях поставьте uafxcw.lib; LIBCMT.lib
  • В игнорировать определенный put put uafxcw.lib; LIBCMT.lib

eit
18 март 2014, в 10:26

Поделиться

убедитесь, что у вас есть #include <afx.h> в "stdafx.h" ПЕРЕД другой, включая #include <string>

user2199593
20 июнь 2017, в 13:24

Поделиться

Я сталкиваюсь с этой проблемой в решении MFC Visual Studio 2010, при этом изменив параметр Use MFC in a Shared DLL на Use MFC in a Static Library в Project → Свойства → Свойства конфигурации → Общие.

Я решаю проблему следующими способами: сначала найдите » Проект» → «Свойства» → «Свойства конфигурации» → «Линкер» → «Enter».

В режиме отладки:

  • Добавьте uafxcwd.lib;Libcmtd.lib в Дополнительные зависимости.
  • Добавьте uafxcwd.lib;Libcmtd.lib в Игнорировать определенные библиотеки по умолчанию.

В режиме релиза:

  • Добавьте uafxcw.lib;Libcmt.lib в Дополнительные зависимости.
  • Добавьте uafxcw.lib;Libcmt.lib в Игнорировать определенные библиотеки по умолчанию.

Обратите внимание:

  1. Не пропустите ; между двумя .lib файлами.
  2. Суффикс -d должен быть добавлен в файлы в режиме отладки.

Cipher Saw
09 нояб. 2018, в 09:05

Поделиться

опечатка. Один глупый способ, который вы получили, а не включать заголовок, вы inlucde cpp.
например.

#include <myclass.cpp> //should be #include <myClass.h>

Gob00st
27 апр. 2012, в 16:47

Поделиться

Убедитесь, что библиотека времени выполнения С++, с которой вы связываетесь, одинакова в вашей статической библиотеке, а также в вашем исполняемом файле. Проверьте свойства проекта C/С++ → Генерация кода- > настройки библиотеки времени выполнения.

msvcyc
18 июль 2009, в 00:59

Поделиться

Избавилась проблема

uafxcwd.lib(afxmem.obj) : warning LNK4006: "void * __cdecl operator new(unsigned __int64)"
  • В дополнительных зависимостях поставьте uafxcw.lib.
  • В игнорировать определенный put put uafxcw.lib.

евгений соснин
07 апр. 2017, в 18:22

Поделиться

Для меня у меня есть статическая библиотека, скомпилированная с помощью _CRTDBG_MAP_ALLOC, а приложение, не скомпилированное с помощью _CRTDBG_MAP_ALLOC, я получал тогда LNK2005. Я изменил приложение для компиляции с помощью _CRTDBG_MAP_ALLOC, и LNK2005 исчезнет.

boutinr
03 март 2015, в 16:09

Поделиться

Во-первых, libcmtd.lib предназначен для отладочной версии, а libcmt.lib — для производства. Дважды проверьте, что вы не включаете их обоих. Одно место для проверки — это раздел «Командная строка» свойств проекта Configuration/Linker.

Если вы перейдете к свойствам проекта и откройте раздел «Свойства конфигурации/компоновщик/вход», вы можете «Ингоровая конкретная библиотека»… попробуйте перечислить libcmtd.lib в этом поле.

Mark Laff
18 июль 2009, в 01:31

Поделиться

Я создал два свежих проекта с VS2017, один работал, другой нет, поэтому я сравнил разницу. Работающий был создан с
File > New Project > Visual C++ > MFC/ATL > MFC Application
тот, который не работает, был создан с
File > New Project > Visual C++ > Windows Desktop > Windows Desktop Wizard
затем добавив MFC. В обоих случаях я использовал MFC в качестве статической библиотеки. Я выяснил два исправления. Но перед этим мы должны добавить импорт, потому что у второго проекта НЕТ!

#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions
#include <afxdisp.h>        // MFC Automation classes

Теперь одно из двух исправлений сработало для меня:

  1. Project > Properties > Configuration Properties > General > Use of MFC установите его для использования в Shared DLL, это также должно автоматически установить C/C++ > Code Generation > Runtime Library на Multi-threaded debug dll/MDd чтобы убедиться, что это действительно так тот. Попробуйте скомпилировать сейчас, у меня это сработало.
  2. Я заметил, что у рабочего проекта был какой-то импорт в stdafx.h, я скопировал их в pch.h в другом проекте, и это сработало (сохранение свойств без изменений, поэтому использовалась статическая библиотека). Код был скопирован так:
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS      // some CString constructors will be explicit

// turns off MFC hiding of some common and often safely ignored warning messages
#define _AFX_ALL_WARNINGS
#include <afxwin.h>         // MFC core and standard components
#include <afxext.h>         // MFC extensions


#include <afxdisp.h>        // MFC Automation classes

Melardev
28 апр. 2019, в 12:12

Поделиться

Для меня проблема была решена путем изменения

Проект → Свойства → Свойства конфигурации → Общие сведения: использование MFC = Использовать MFC в общей DLL

Прежде чем установить значение «Использовать стандартные библиотеки Windows»

Кроме того, мне пришлось установить опцию /MD в

Проект → Свойства → C/С++ → Генерация кода: Библиотека времени выполнения = Многопоточная DLL (/MD)

flexo
31 авг. 2017, в 08:41

Поделиться

Объявлен заголовочный файл и определен переменная. Возможные решения:
Объявить переменную в .h: extern BOOL MyBool; а затем назначьте его в файл .c или .cpp: BOOL MyBool = FALSE;.
Объявите переменную static.
Объявите переменную selectany.

https://msdn.microsoft.com/en-us/library/72zdcz6f.aspx

usman chaudhry
05 июль 2017, в 07:30

Поделиться

Я также добавлю, что если вы заменили операторы new/delete (и если да, то сделайте массив и скалярные оба), вам может потребоваться пометить их как __forceinline, чтобы obj не сталкивался с Lib.

Например, я сделал это, чтобы выровнять выделенные выделения и имел такую ​​же проблему, пока не сделал это:

__forceinline void * operator new(size_t size)
{
    return _aligned_malloc(size, 16);
}
__forceinline void operator delete(void* ptr)
{
    _aligned_free(ptr);
}
__forceinline void * operator new [](size_t size)
{
    return _aligned_malloc(size, 16);
}
__forceinline void operator delete [](void* ptr)
{
    _aligned_free(ptr);
}

Dave
15 авг. 2015, в 02:28

Поделиться

У меня также была аналогичная проблема. Причина, поясняющая Донни, объясняет причину. Решение состояло в том, чтобы просмотреть сообщения об ошибках, а затем удалить эти задействованные библиотеки и добавить эти библиотеки в порядке очередей MFC, а затем CRT libs.

Способ сделать это в vs2008 дается ali.

user36476
10 май 2013, в 17:40

Поделиться

Проверьте файл манифеста обоих проектов, убедитесь, что они связывают одну и ту же версию стандартной библиотеки. Скорее всего, это не так, проверьте привязку к стандартной библиотеке properties- > code generation- > .

DeusAduro
18 июль 2009, в 02:43

Поделиться

Ещё вопросы

  • 0Где найти 7z dll?
  • 0Загрузить контроллер angularJs
  • 0ROW_NUMBER () эквивалентная функция в MySQL
  • 0удаление анимации JavaScript
  • 0Вид не обновляется после обновления области
  • 0Добавить в тот же класс с условием?
  • 1Реализация события щелчка мыши на плитке на карте
  • 0Перезагрузить страницу, чтобы показать вставленные элементы пользовательского интерфейса jQuery?
  • 1Что означает объект, который должен быть инициирован один раз, но вызван разными потоками? (Я имею в виду сервлеты ..)
  • 1Регулярное выражение для соответствия средней строке внутри необязательного пробела
  • 1Почему невозможно использовать класс PackageManager из компонента Brokered WinRT?
  • 0Вставка выпадающего элемента между двумя элементами списка с использованием JavaScript
  • 0Как применить темы к HTML внутри метода append ()
  • 1pip install производит «Не удалось найти версию, которая удовлетворяет требованию»
  • 0R RMySQL извлекает большие строки как строки
  • 0Visual Studio Community 2015 источник данных MySQL не отображается
  • 1Ninject Неявная ошибка привязки конструктора для универсальных коллекций
  • 1Как найти не дочерний вид в Android?
  • 1Как нажать кнопку после успешного Ajax?
  • 0php Динмический формат XML в массив php
  • 0Backbone.js — исключение ncaught: SyntaxError: Конструктор функции: не удалось скомпилировать функцию
  • 0Параметр контрольной суммы в MYSQL для назначения каждому полю
  • 1sqlalchemy: выберите из таблицы, где столбец в QUERY
  • 0Нет ли возможной потери данных при преобразовании из строки в строку с помощью строкового конструктора?
  • 0Я не могу добавить новую строку, ограничение внешнего ключа не удается в Mysql
  • 0Ошибка обновления при добавлении двузначного целого числа mysql
  • 1Добавьте CheckBox в заголовок Datagridview в C # и поменяйте место флажка с помощью полосы прокрутки
  • 0Как узнать, доступен ли уровень отладки dx?
  • 1Kindle — лучший способ сохранить изображения
  • 0CodeIgniter — извлекает данные из MySQL и отображает без обновления страницы
  • 1Как разрешить каскадное удаление в Hibernate?
  • 0Потенциальные причины ионной функции не работают в Ionic View, но работают в сети
  • 1WPF DataGrid — связать свойство dataitem как CommandParameter
  • 1Как предотвратить перезапись oldVersion в bindingRedirect при добавлении bindingRedirect через Nuget
  • 1Доступ к синглтону WCF в IIS
  • 1SignalR ограничение количества подключений
  • 0Значение Json Не восстанавливается
  • 1JEE7 @ Транзакционная аннотация не всегда срабатывает
  • 0Как обновить jQuery в drupal7
  • 1Вставка значений в базу данных SQL Server
  • 1Как добавить значения в новый столбец в панде dataframe?
  • 1назначение пула соединений с базой данных?
  • 1Защищенные переменные не разрешены по умолчанию в Checkstyle, но как насчет enum?
  • 0PHP REGEXP для замены строк на URL-адреса в тегах <p>
  • 1Общий тег Debug / Release в файле csproj
  • 1Наследование потоков — класс B расширяет A, несовместимый с A
  • 1ASP.Net публикует главную страницу в каталоге сервера
  • 0Почему все привязки разрешаются каждый цикл $ digest?
  • 1Как сохранить изменения в свойствах навигации с помощью Entity Framework
  • 0Как поместить радио-кнопки в одну строку внутри формы?



Сообщ.
#1

,
27.07.04, 13:13

    Junior

    *

    Рейтинг (т): 0

    Написал программульку которая чего-то там считает(физику разную), основываясь на библиотеках некоего CLHep (может кто физик- о такой штуке слышал).
    В console application она у меня все считает.
    Потом решил попробовать Гуи добавить…в MFC я полный нуб, поэтому пошел на firststeps и взял из первых шагов в разделе Visual C++ примерчик, который кнопочки рисует. Ну долго не думая, добавил этот примерчик в мой воркспейс и в нажатии на кнопку просто вызвал мою прогу

    ExpandedWrap disabled

      void CMyButton::OnLButtonDblClk(UINT, CPoint)

      {

          Generate::Run1(mean,deviat,nEvents,nBins,maxQ,Qinv_user,chiSq,Corr); // вызов моей рутины

          MoveWindow(CRect(120,100,220,150),TRUE);// то что предлагают сделать в примере на firststeps

      }

    Ну и понятное дело выскочила куча ошибок LNK2005(куда ж без них) типа вот таких

    ExpandedWrap disabled

      LIBCMTD.lib(dbgheap.obj) : error LNK2005: _free already defined in msvcrtd.lib(MSVCRTD.dll)

      libcpmtd.lib(iostream.obj) : error LNK2005: «public: __thiscall std::ios_base::Init::~Init(void)» (??1Init@ios_base@std@@QAE@XZ) already defined in msvcprtd.lib(MSVCP60D.dll)

      LIBCMTD.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)

      svcrtd.lib(MSVCRTD.dll) : error LNK2005: __setmbcp already defined in LIBCMTD.lib(mbctype.obj)

    Ну я по колесу постучал, дворники протер :) (мультитритед везде поставил, перебилдил, прекомпайлед хедерс убрал) а ошибки так и остались.

    Причем как я понимаю MSVCRTD.dll и LIBCMTD.lib лежат одна в папке windows, другая в библиотеках visual studio(поиск фарева).

    В чем может быть ошибка? может кто на заре своей деятельности сталкивался? или в мфц все принципиально не так делается?

    Сообщение отредактировано: pushistik — 27.07.04, 15:03


    pushistik



    Сообщ.
    #2

    ,
    27.07.04, 15:04

      Junior

      *

      Рейтинг (т): 0

      Update:
      написал /nodefaultlib:»msvcrtd.lib» /nodefaultlib:»msvcirtd.lib» /nodefaultlib:»msvcprtd.lib»- ошибки ушли, только появились ворнинги

      ExpandedWrap disabled

        LINK : warning LNK4049: locally defined symbol «»public: __thiscall std::_Winit::_Winit(void)» (??0_Winit@std@@QAE@XZ)» imported

      как это будет влиять на ход программы?

      Сообщение отредактировано: pushistik — 27.07.04, 16:00


      Dr_Timas



      Сообщ.
      #3

      ,
      27.07.04, 16:09

        Newbie

        Рейтинг (т): 1

        Может быть есть смысл добавить GUI без использования MFC. То есть, я имею ввиду написать скелет приложения, компилировать его как win32, а все элементы вставлять с помощью CreateWindowEx. Например:

        ExpandedWrap disabled

          #include <windows.h>

          LRESULT CALLBACK WindowFunc(HWND, UINT, WPARAM, LPARAM);    

              char szWinName[]=»MyWin»;

          int WINAPI WinMain(HINSTANCE hThisInst,HINSTANCE hPrevInst, LPSTR lpszArgs, int nWinMode)

          {

              HWND hwnd;

              MSG msg;

              WNDCLASSEX wcl;

              wcl.cbSize=sizeof(WNDCLASSEX);

              wcl.hInstance=hThisInst;                        

              wcl.lpszClassName=szWinName;                    

              wcl.lpfnWndProc=WindowFunc;                    

              wcl.style=0;                                    

              wcl.hIcon=LoadIcon(NULL,IDI_APPLICATION);      

              wcl.hIconSm=NULL;                              

              wcl.hCursor=LoadCursor(NULL,IDC_ARROW);        

              wcl.lpszMenuName=NULL;                          

              wcl.cbClsExtra=0;                              

              wcl.cbWndExtra=0;

              wcl.hbrBackground=(HBRUSH) GetStockObject(BLACK_BRUSH);

              if(!RegisterClassEx(&wcl)) return 0;

              /*hwnd=CreateWindow(szWinName, «Title»,

                  WS_POPUP|WS_SYSMENU, 0, 0,

                  GetSystemMetrics(SM_CXSCREEN),

                  GetSystemMetrics(SM_CYSCREEN),

                  0, 0, hThisInst, 0);*/

              hwnd = CreateWindow(                            

                  szWinName,                                  

                  «Skelet for Uchebnik»,                      

                  WS_OVERLAPPEDWINDOW,                        

                  CW_USEDEFAULT,                              

                  CW_USEDEFAULT,                              

                  CW_USEDEFAULT,                              

                  CW_USEDEFAULT,                                  

                  NULL,                                      

                  NULL,                                      

                  hThisInst,                                  

                  NULL                                        

              );

              CreateWindowEx(NULL,»button»,»1″,WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,10,10,70,70,hwnd,(HMENU)100,hThisInst,NULL);

              CreateWindowEx(NULL,»edit», «Хрен»,

                   WS_CHILD | WS_VISIBLE | WS_BORDER ,

                       100, 50, 200, 20, hwnd, (HMENU)111, hThisInst, NULL);

              ShowWindow(hwnd,nWinMode);

              UpdateWindow(hwnd);

              while(GetMessage(&msg, NULL, 0,0))

              {

                  TranslateMessage(&msg);

                  DispatchMessage(&msg);

              }

              return msg.wParam;

          }

          LRESULT CALLBACK WindowFunc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)

          {

              switch(message){

              case WM_PAINT:                                  

                  UpdateWindow(hwnd);    

                  break;

              case WM_DESTROY:                                

                  PostQuitMessage(0);

                  break;  

              default:        

                  return DefWindowProc(hwnd, message, wParam,lParam);

              }

              return 0;

          }

        А прогу твою запихать/внедрить в этот шаблон (я имею ввиду код). Не бей, если я что-то не так понял. С похмелья туго соображаю…

        :blink:

        Добавлено в 27.07.04, 16:14:
        Ну если warningi, то это уже не так страшно. Программа конечно будет запускаться, но вот будет ли работать правильно? Проверь, если все верно, то не стоит переживать… Блин, башка болит
        :unsure:

        M

        Пользуйтесь тегом кода.
        Предупреждение не ставлю т.к. новичок.
        Подсказка в ссылке «Помощь по кодам форума» слева формы ответа.
        Leprecon


        pushistik



        Сообщ.
        #4

        ,
        28.07.04, 06:20

          Junior

          *

          Рейтинг (т): 0

          спасибо за код, ща попробую:)

          Master

          Fester



          Сообщ.
          #5

          ,
          28.07.04, 06:52

            А может дело не в мультитреде?

            LNK2005 возникает больше, чем в одном случае…


            pushistik



            Сообщ.
            #6

            ,
            28.07.04, 12:12

              Junior

              *

              Рейтинг (т): 0

              кто знает…у меня вроде конфликтовал статическая библиотека с динамическим приложением :wacko: -> отрубил библиотеки- вроде не ругается, окромя варнинга

              Сообщение отредактировано: pushistik — 28.07.04, 12:19


              nastenka



              Сообщ.
              #7

              ,
              28.07.04, 12:36

                я уж где-то раньше писала, так что извините за повторение, в любом случае не вредит в dependency walker посмотрет, там «какие» и «где» библиотеки лежат. варнинги тож не дело…

                My project was building perfectly, but after I changed a numeric value (just player velocity) I started getting linker errors. These errors seem to have started for absolutely no reason.

                
                Linking...
                libcmtd.lib(fpinit.obj) : error LNK2005: __fltused already defined in a previous module
                libcmtd.lib(fpinit.obj) : error LNK2005: __ldused already defined in a previous module
                libcmtd.lib(setlocal.obj) : error LNK2005: __configthreadlocale already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(tidtable.obj) : error LNK2005: __encode_pointer already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(tidtable.obj) : error LNK2005: __decode_pointer already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(dbgheap.obj) : error LNK2005: __CrtSetCheckCount already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(crt0dat.obj) : error LNK2005: _exit already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(crt0dat.obj) : error LNK2005: __exit already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(crt0dat.obj) : error LNK2005: __cexit already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(crt0dat.obj) : error LNK2005: __amsg_exit already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(crt0dat.obj) : error LNK2005: __initterm_e already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in MSVCRTD.lib(cinitexe.obj)
                libcmtd.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj)
                libcmtd.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj)
                libcmtd.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj)
                libcmtd.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(vsprintf.obj) : error LNK2005: _vsprintf already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(errmode.obj) : error LNK2005: ___set_app_type already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(dbgrptw.obj) : error LNK2005: __CrtDbgReportW already defined in MSVCRTD.lib(MSVCR80D.dll)
                libcmtd.lib(ismbbyte.obj) : error LNK2005: __ismbblead already defined in MSVCRTD.lib(MSVCR80D.dll)
                LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
                MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib 'libcmtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
                libcmtd.lib(crt0.obj) : error LNK2019: unresolved external symbol _main referenced in function ___tmainCRTStartup
                
                

                I think this has happened in the past, but they seemed completely random and I gave up in the end.

                I set /NODEFAULTLIB as it said to in the warning:
                MSVCRTD.lib(cinitexe.obj) : warning LNK4098: defaultlib ‘libcmtd.lib’ conflicts with use of other libs; use /NODEFAULTLIB:library

                But now I’m getting a couple of hundred linkers errors, that as far as I can see shouldn’t be there, such as:
                TextureManager.obj : error LNK2001: unresolved external symbol «void * __cdecl operator new(unsigned int)» (??2@YAPAXI@Z)
                TextureManager.obj : error LNK2001: unresolved external symbol «void __cdecl operator delete(void *)» (??3@YAXPAX@Z)
                Error 105 error LNK2001: unresolved external symbol «__declspec(dllimport) public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)» (__imp_??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) TextureManager.obj
                I’m including <string>.

                What does /NODEFAULTLIB do?

                Are you using Multi-threaded (/MT) in the Runtime Library field of the C/C++ Project properties?

                Понравилась статья? Поделить с друзьями:
              • Error lnk2001 неразрешенный внешний символ main
              • Error lnk2001 неразрешенный внешний символ cxxframehandler3
              • Error lnk2001 unresolved external symbol winmain 16
              • Error lnk2001 unresolved external symbol purecall
              • Error lnk2001 unresolved external symbol public