Ошибка LNK2019: неразрешенный внешний символ «toString (int)»

#visual-studio-2010 #unresolved-external #c -standard-library #lnk2019 #stdstring

#visual-studio-2010 #неразрешенный -внешний #c -стандартная библиотека #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 Используйте MFC в общей библиотеке DLL
  3. Использование ALT без использования ALT
  4. Набор символов использует многобайтовый набор символов
  5. Библиотека времени выполнения многопоточная DLL (/MD)
  6. Дополнительные зависимости msvcprtd.lib, Carbon.библиотека, BUFFER_API.lib, BUFFER_FRAMEWORK.lib, Messages.lib
  7. Игнорировать все библиотеки по умолчанию Нет

Информация о свойствах сообщений:

  1. Статическая библиотека типа конфигурации (.lib)
  2. Использование MFC Используйте MFC в общей библиотеке DLL
  3. Использование ALT без использования ALT
  4. Набор символов Используйте набор символов Unicode
  5. Библиотека времени выполнения многопоточная DLL (/MD)
  6. Дополнительные зависимости
  7. Зависимости библиотеки ссылок отсутствуют

Информация о свойствах углерода:

  1. Статическая библиотека типа конфигурации (.lib)
  2. Использование MFC Используйте MFC в общей библиотеке DLL
  3. Использование ALT без использования ALT
  4. Набор символов Используйте набор символов Unicode
  5. Библиотека времени выполнения многопоточная DLL (/MD)
  6. Зависимости библиотеки ссылок отсутствуют

Мой вывод ссылки CnD:

 1>------ Rebuild All started: Project: CnD_Device, Configuration: Debug Win32 ------
    1>  JDTC_Message.cpp
    1>h:my.name_local_projectprojectemdofpcp_syspackagescnd_devicesrcproject_message.cpp(47): warning C4018: '<' : signed/unsigned mismatch
    1>h:my.name_local_projectprojectemdofpcp_syspackagescnd_devicesrcproject_message.cpp(54): warning C4244: '=' : conversion from 'float' to 'UInt32', possible loss of data
    1>h:my.name_local_projectprojectemdofpcp_syspackagescnd_devicesrcproject_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_projectprojectemdofpcp_syspackagescnd_devicesrccnd_device.cpp(61): warning C4101: 'e' : unreferenced local variable
    1>h:my.name_local_projectprojectemdofpcp_syspackagescnd_devicesrccnd_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_projectprojectemdofpcp_syspackagescnd_devicesrccnd_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.0VClibmsvcprtd.lib:
    1>      Searching ............CarbondebuglibCarbon.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_API.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_Framework.lib:
    1>      Searching ............MessagesDebuglibMessages.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcrtd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibkernel32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuser32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibgdi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmsimg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomdlg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwinspool.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibadvapi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibshell32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomctl32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibshlwapi.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuuid.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibatlsd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibole32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Aliboleaut32.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibMSVCRT.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibOLDNAMES.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100ud.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100ud.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcprt.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwininet.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibws2_32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmswsock.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcprtd.lib:
    1>      Searching ............CarbondebuglibCarbon.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_API.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_Framework.lib:
    1>      Searching ............MessagesDebuglibMessages.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcrtd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibkernel32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuser32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibgdi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmsimg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomdlg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwinspool.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibadvapi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibshell32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomctl32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibshlwapi.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuuid.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibatlsd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibole32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Aliboleaut32.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibMSVCRT.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibOLDNAMES.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100ud.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100ud.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcprt.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwininet.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibws2_32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmswsock.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcprtd.lib:
    1>      Searching ............CarbondebuglibCarbon.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_API.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_Framework.lib:
    1>      Searching ............MessagesDebuglibMessages.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcrtd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibkernel32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuser32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibgdi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmsimg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomdlg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwinspool.lib:
    1>  
    1>  Finished searching libraries
    1>     Creating library H:my.name_local_projectprojectEMDOFPCP_SYSpackagesCnD_DevicebuildCnD_DeviceDebugCnD_Device.lib and object H:my.name_local_projectprojectEMDOFPCP_SYSpackagesCnD_DevicebuildCnD_DeviceDebugCnD_Device.exp
    1>  
    1>  Searching libraries
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcprtd.lib:
    1>      Searching ............CarbondebuglibCarbon.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_API.lib:
    1>      Searching ..............EMDBUFFER_SDKLibsBUFFER_Framework.lib:
    1>      Searching ............MessagesDebuglibMessages.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100d.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcrtd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibkernel32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuser32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibgdi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmsimg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomdlg32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwinspool.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibadvapi32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibshell32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibcomctl32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibshlwapi.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibuuid.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibatlsd.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibole32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Aliboleaut32.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibMSVCRT.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibOLDNAMES.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfc100ud.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VCatlmfclibmfcs100ud.lib:
    1>      Searching C:Program Files (x86)Microsoft Visual Studio 10.0VClibmsvcprt.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibwininet.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibws2_32.lib:
    1>      Searching C:Program Files (x86)Microsoft SDKsWindowsv7.0Alibmswsock.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_projectprojectEMDOFPCP_SYSpackagesCnD_DevicebuildCnD_DeviceDebugCnD_Device.dll : fatal error LNK1120: 1 unresolved externals
    ========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========
 

Комментарии:

1.Некоторые ссылки по теме: support.microsoft.com/kb/154419 msdn.microsoft.com/en-us/library/ee258870.aspx

Ответ №1:

Я нашел свою проблему. Я бы удалил это; однако я обнаружил, что эта ошибка ссылки является распространенной, но никогда не имеет хороших общих решений — помимо изменений свойств проекта.

Источник моей проблемы: Carbon и Messages определили Int32 как длинный.

CnD определил Int32 как int.

Неразрешенный внешний символ, вызывающий ошибку, был

 extern std::string toString(Int32 v);
 

Таким образом, CnD ожидал, что функция будет отличаться от той, которую определили Carbon и Messages.