Naveen_vemuri Ответов: 1

Как исправить эту ошибку? Фатальная ошибка LNK1103: отладочная информация повреждена; модуль перекомпиляции


фатальная ошибка LNK1103: отладочная информация повреждена; модуль перекомпиляции
в чем причина этой ошибки и как ее устранить?

Что я уже пробовал:

фатальная ошибка LNK1103: отладочная информация повреждена; модуль перекомпиляции

Jochen Arndt

Какая версия VS?
Модуль построен вами или это сторонний модуль?
Был ли он построен с той же версией VS, что и ваш проект?

Ошибка должна исчезнуть при построении модуля с той же версией VS, что и проект.

Naveen_vemuri

он был написан в версии VS2008.Теперь я конвертируюсь в версию VS2017 и строю с помощью VS2017 verion.

Jochen Arndt

Итак, вы пытаетесь связать сборку версии с 2008 годом со сборкой проекта 2017 года?

Стройте все с 2017 года. Проверьте также настройки вашего проекта. Возможно, у вас все еще есть путь к старому модулю в вашем преобразованном проекте, так что создается новая версия модуля, но старая все еще используется для связи с проектом.

Naveen_vemuri

До сих пор проблема не решена.Есть ли способ узнать, какой старый модуль связывается? - я тоже пробовал многословно, но ничего не нашел.

Jochen Arndt

Сообщение об ошибке содержит имя модуля. Найдите это в подробном выводе и проверьте путь.

Если это неверно (путь к старой версии), проверьте настройки вашего проекта (настройки пути компоновщика и порядок, а также для модулей, указанных с полным путем).

Naveen_vemuri

Пути только правильные.я дам вам четкое представление о проблеме.
у меня есть проект под названием "3DCP. sln".у него есть пять проектов
1.3 DAppLib
2.3 DAppTest
3.3 DEngine
4.Инструменты
5.Win32Emu.
Каждый из них не имеет никакой зависимости от других, кроме 3DAppTest, который зависит от всех остальных четырех проектов.Я преобразовал каждый проект из vs2008 в vs2017, и они строятся нормально, за исключением 3DAppTest, который дает вышеуказанную ошибку.Ошибка возникает в проекте 3DAppTest и в файле Win32Emu.lib, который является выходным файлом для проекта win32Emu, используемого этим проектом.

Jochen Arndt

Вы можете добавить это к своему вопросу, чтобы другие тоже сразу увидели его и могли помочь (используйте зеленую ссылку "улучшить вопрос").

Учитывая вышесказанное, все, что я все еще могу предложить, - это проверить, что win32emulib является фактическим (проверка даты) и что он связан (rebuild all, build lib before project).

Если вы все еще не можете решить эту проблему, вы можете создать lib только как релиз и связать его с отладочной сборкой вашего проекта.

Вы также можете создать небольшой тестовый проект, который вызывает одну функцию из библиотеки, и посмотреть, не приведет ли это к ошибке. Если нет, то что-то не так с вашей установкой.

Зависят ли другие проекты также от этой библиотеки? Затем вы также должны проверить их (другие проекты, связанные со старой версией).

Naveen_vemuri

я видел в некоторых сообщениях, что эта ошибка находится в последней версии visual studio 15.3, а не с 15.0 и 15.2.do ты что-нибудь об этом знаешь?

Jochen Arndt

К сожалению, нет.

Naveen_vemuri

в приведенной выше ошибке говорится "перекомпилировать модуль".что это значит? и как это перекомпилировать?
"Ошибка возникает в проекте 3DAppTest и в файле Win32Emu.lib, который является выходным файлом для проекта win32Emu, используемого этим проектом."

Jochen Arndt

Это означает, что вы должны воссоздать упомянутые файлы (Ы) (Win32Emu.lib, Win32Emu.dll), выполнив перестройку для соответствующего проекта.

Naveen_vemuri

Даже если я перестраиваю проекты, ошибка все равно остается

Jochen Arndt

Вам действительно нужна отладочная сборка этой библиотеки?

Если нет, создайте этот проект только как релиз и используйте версию библиотеки релизов также с отладочными сборками других проектов. Это не решит проблему, но вы можете продолжать работать над другими проектами.

1 Ответов

Рейтинг:
1

OriginalGriff

Скопируйте исходный проект в новую папку перед попыткой обновления: затем очистите его, чтобы удалить все промежуточные файлы и выполнить полную перестройку. Использовать "Сборки...Чистое решение", затем удалите папки BIN и OBJ для каждого проекта в решении, а также все, что находится под ними, чтобы быть в безопасности. Затем выполните полную перестройку решения, чтобы увидеть, что произойдет. Если вы ссылаетесь на DLL-файлы из других решений, сделайте то же самое и там.


Naveen_vemuri

Я пробовал это так много раз,но так и не решился.когда я переключаю "свойства-Компоновщик-отладка-генерация отладочной информации" на "нет", он работает нормально, но мне тоже нужен pdb-файл.Есть ли другой способ мы можем решить эту проблему?

RedDk

Файл. pdb - это отладочные данные программы. Этот файл генерируется компилятором/(linker (sp?)). В свойствах проекта есть переключатель (во всяком случае, в C++; возможно, его нет в C#...), который отказывается от вывода, так что предположительно no .pdb появится после перестройки.