错误LNK2019:未解析的外部符号“toString(int)”

时间:2011-10-21 14:28:01

标签: visual-studio-2010 unresolved-external c++-standard-library lnk2019 stdstring

环境:Windows XP。 Visual Studios 2010.语言 - C ++。

我遇到了以下链接错误&已经没有想法如何解决这个问题。我有一个项目(CnD设备),它链接到由我的小组控制的2个项目(消息和碳)。我试图在3个项目之间搜索项目属性

enter tcp_driver.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl toString(int)" (?toString@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "protected: bool __thiscall Tcp_Driver::readMessage(void)" (?readMessage@Tcp_Driver@@IAE_NXZ)

我认为这个问题是因为我没有链接到标准C ++库中的字符串。我一遍又一遍地扫描了我的房产清单。以下是我认为对此问题至关重要的一些属性。

CnD设备属性信息:

  1. 配置类型动态库.dll
  2. 使用MFC 在共享DLL中使用MFC
  3. 使用ALT 不使用ALT
  4. 字符集使用多字节字符集
  5. 运行时库多线程DLL(/ MD)
  6. 其他相关性 msvcprtd.lib,Carbon.lib,BUFFER_API.lib,BUFFER_FRAMEWORK.lib,Messages.lib
  7. 忽略所有默认库
  8. 消息属性信息:

    1. 配置类型静态库(.lib)
    2. 使用MFC 在共享DLL中使用MFC
    3. 使用ALT 不使用ALT
    4. 字符集使用Unicode字符集
    5. 运行时库多线程DLL(/ MD)
    6. 其他相关性
    7. 链接库依赖关系
    8. 碳属性信息:

      1. 配置类型静态库(.lib)
      2. 使用MFC 在共享DLL中使用MFC
      3. 使用ALT 不使用ALT
      4. 字符集使用Unicode字符集
      5. 运行时库多线程DLL(/ MD)
      6. 链接库依赖关系
      7. 我的CnD链接输出是:

        1>------ Rebuild All started: Project: CnD_Device, Configuration: Debug Win32 ------
            1>  JDTC_Message.cpp
            1>h:\my.name_local_project\project\emd\ofp\cp_sys\packages\cnd_device\src\project_message.cpp(47): warning C4018: '<' : signed/unsigned mismatch
            1>h:\my.name_local_project\project\emd\ofp\cp_sys\packages\cnd_device\src\project_message.cpp(54): warning C4244: '=' : conversion from 'float' to 'UInt32', possible loss of data
            1>h:\my.name_local_project\project\emd\ofp\cp_sys\packages\cnd_device\src\project_message.cpp(82): warning C4244: '=' : conversion from 'UInt32' to 'float', possible loss of data
            1>  ComponentEntryDLL.cpp
            1>  CnD_Network_Driver.cpp
            1>  CnD_Message_Handler.cpp
            1>  CnD_Message_Factory.cpp
            1>  CnD_Heartbeat_Message.cpp
            1>  CnD_Device.cpp
            1>  _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
            1>h:\my.name_local_project\project\emd\ofp\cp_sys\packages\cnd_device\src\cnd_device.cpp(61): warning C4101: 'e' : unreferenced local variable
            1>h:\my.name_local_project\project\emd\ofp\cp_sys\packages\cnd_device\src\cnd_device.cpp(120): warning C4101: 'e' : unreferenced local variable
            1>  MonitoringData.cpp
            1>  tcp_driver.cpp
            1>  _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
            1>  Generating Code...
            1>h:\my.name_local_project\project\emd\ofp\cp_sys\packages\cnd_device\src\cnd_message_factory.cpp(59): warning C4715: 'CnD_Message_Factory::createMessage' : not all control paths return a value
            1>  
            1>  Searching libraries
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprtd.lib:
            1>      Searching ..\..\..\..\..\..\Carbon\debug\lib\Carbon.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_API.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_Framework.lib:
            1>      Searching ..\..\..\..\..\..\Messages\Debug\lib\Messages.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcrtd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\msimg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shlwapi.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\atlsd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100ud.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100ud.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprt.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\wininet.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ws2_32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\mswsock.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprtd.lib:
            1>      Searching ..\..\..\..\..\..\Carbon\debug\lib\Carbon.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_API.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_Framework.lib:
            1>      Searching ..\..\..\..\..\..\Messages\Debug\lib\Messages.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcrtd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\msimg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shlwapi.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\atlsd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100ud.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100ud.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprt.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\wininet.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ws2_32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\mswsock.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprtd.lib:
            1>      Searching ..\..\..\..\..\..\Carbon\debug\lib\Carbon.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_API.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_Framework.lib:
            1>      Searching ..\..\..\..\..\..\Messages\Debug\lib\Messages.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcrtd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\msimg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
            1>  
            1>  Finished searching libraries
            1>     Creating library H:\my.name_local_project\project\EMD\OFP\CP_SYS\packages\CnD_Device\build\CnD_Device\Debug\CnD_Device.lib and object H:\my.name_local_project\project\EMD\OFP\CP_SYS\packages\CnD_Device\build\CnD_Device\Debug\CnD_Device.exp
            1>  
            1>  Searching libraries
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprtd.lib:
            1>      Searching ..\..\..\..\..\..\Carbon\debug\lib\Carbon.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_API.lib:
            1>      Searching ..\..\..\..\..\..\..\EMD\BUFFER_SDK\Libs\BUFFER_Framework.lib:
            1>      Searching ..\..\..\..\..\..\Messages\Debug\lib\Messages.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100d.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcrtd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\kernel32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\user32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\gdi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\msimg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comdlg32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\winspool.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\advapi32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shell32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\comctl32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\shlwapi.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\uuid.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\atlsd.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ole32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\oleaut32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\MSVCRT.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\OLDNAMES.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfc100ud.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\atlmfc\lib\mfcs100ud.lib:
            1>      Searching C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib\msvcprt.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\wininet.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\ws2_32.lib:
            1>      Searching C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\lib\mswsock.lib:
            1>  
            1>  Finished searching libraries
            1>LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
            1>LINK : warning LNK4098: defaultlib 'mfc100ud.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
            1>LINK : warning LNK4098: defaultlib 'mfcs100ud.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
            1>tcp_driver.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl toString(int)" (?toString@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "protected: bool __thiscall Tcp_Driver::readMessage(void)" (?readMessage@Tcp_Driver@@IAE_NXZ)
            1>H:\my.name_local_project\project\EMD\OFP\CP_SYS\packages\CnD_Device\build\CnD_Device\Debug\CnD_Device.dll : fatal error LNK1120: 1 unresolved externals
            ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
        

1 个答案:

答案 0 :(得分:4)

我发现了我的问题。我会删除这个;但是,我发现这个链接错误很常见,但从来没有很好的通用解决方案 - 除了项目属性更改。

我的问题的根源: Carbon和Messages将Int32定义为long。

CnD将Int32定义为int。

导致错误的未解决的外部符号是

extern std::string toString(Int32 v);

因此,CnD期望与Carbon和Messages定义的功能不同。