Я открыл старое рабочее пространство, которое представляет собой библиотеку и ее тестовый комплект. Раньше он работал нормально, но сейчас нет, и старые версии кода не работают с одинаковыми ошибками. Я пытался воссоздать проект, и это тоже вызывает те же ошибки. В настройках проекта ничего не выходит из строя, и сгенерированный код работает в основном приложении.
Я удалил большинство файлов и довел их до минимума, чтобы сгенерировать ошибку. К сожалению, я не могу опубликовать проект, так как он используется в рабочем коде.
Ошибка компоновщика LNK2001, которую я обычно получаю, означает, что я остановил библиотеку или забыл реализовать виртуальную функцию. Однако это часть стандартной библиотеки шаблонов - и это заголовок.
Код, который указан как имеющий проблему в IOCompletionPort.obj, на самом деле не использует std::string
напрямую, но вызывает класс, который: Comms::Exception
принимает std::string
и значение GetLastError
или WSAGetLastError
.
Функция, упомянутая в ошибке (GetMessage
), реализована, но является виртуальной функцией, поэтому другие классы могут переопределять ее при необходимости. Однако, похоже, что компилятор сделал это как версию Ansi, но я не могу найти какие-либо параметры в настройках, которые бы контролировали это. Я подозреваю, что это может быть проблемой, но так как вариантов для библиотеки очень мало, я точно не знаю. Однако оба проекта указывают _MBCS в опциях компилятора.
-------------------- Конфигурация: TestComms - Win32 Debug -------------------- Связывание ... Comms.lib (IOCompletionPort.obj)
: ошибка LNK2001: неразрешенный внешний символ "public: virtual class
станд :: basic_string, класс
std :: allocator> __thiscall
Comms :: Exception :: GetMessageA (void) const "(? GetMessageA @
Исключение @ Коммуникационный @@ ВБО? AV? $ Basic_string @ DU? $ Char_traits @ D @ станд @@ V? $ Распределитель @ D @ 2 @@ станд @@ XZ)
Отладка / TestComms.exe: фатальная ошибка LNK1120: 1 неразрешенная внешность
Ошибка выполнения link.exe.
TestComms.exe - 2 ошибки, 0 предупреждений
Есть предложения? Я потерял большую часть утра на это и не хочу терять большую часть дня тоже.