Сбой связывания [Ошибка ilink32] Неустранимый: невозможно открыть файл 'TYPES.OBJ'

Я обновлял код для старой сборки проекта, используя C++ Builder 2010 для компиляции с C++ Builder 10 Seattle. Мне в основном приходилось менять пути, много dupIgnore в TDuplicates::dupIgnore, повторно импортируйте некоторые компоненты, такие как MSXML, MSMQ и т. д.

Сначала для группы подпроектов, которые основной проект использует в форме bpl и dll, и, наконец, код основного проекта компилируется.

Но... не удается связать:P

[ilink32 Error] Fatal: Unable to open file 'TYPES.OBJ'

Я пытался найти информацию о потенциальных проблемах, и многие упоминают, чтобы убедиться, System поставляется в области действия модуля в настройках компилятора Delphi. Но это уже присутствует для этого проекта. Что еще может быть причиной этого?

Для информации. Скомпилировано с использованием "классического" компилятора bcc32.

Включить путь:

$(BDSINCLUDE)\windows\vcl;$(BDSINCLUDE)\dinkumware;

Путь к библиотеке:

$(BDSLIB)\$(PLATFORM)\$(Config);$(BDSLIB)\$(PLATFORM)\Release\psdk;

5 ответов

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

У меня была похожая проблема, когда я конвертировал старый проект из BCB5 в BCB 6. Когда я удалил строку с именем ".obj" из файла проекта с расширением ".bpr", моя проблема была решена.

Строка в файле проекта Project1.bpr была такой:

<OBJFILES value="Unit1.obj Types.obj"/>

после модификации:

<OBJFILES value="Unit1.obj"/>

Я бы следовал советам, данным Тимом Д. первым. Всякий раз, когда я начинаю использовать более новую версию компилятора, 90% импорта старых проектов происходит из-за меня напрямую, включая код / ​​заголовок / объектные файлы и создание пустой версии, а затем ее копирование в 99% случаев.

Убедившись в том, что данные были созданы свежими, а затем импортировав в них ваши старые данные, я проверил наличие унаследованных проблем несовместимости. Вы находитесь на правильном пути с изменением ваших "списков". Я также рекомендую вам убедиться, что весь ваш код переписан для нового компилятора. Это помогает как с совместимостью кода, так и с оптимизацией для запуска готового проекта.

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

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

У меня была похожая проблема, когда я конвертировал старый проект из BCB5 в BCB 6. Когда я удалил строку с именем ".obj" из файла проекта с расширением ".bpr", моя проблема была решена.

Строка в файле проекта Project1.bpr была похожа: после модификации:

Похоже, что компилятор получает TYPES.OBJ, но не может открыться, что может произойти из-за множества факторов (например, C++ зависит от платформы. TYPES.cpp может быть встроен в разные ОС). Вы можете наверняка решить проблему, мою сборку TYPES.cpp.. Также имейте в виду, что библиотеки, импортируемые этим CPP, должны быть совместимы даже // Если вы все еще получаете ошибку, пожалуйста, продолжайте полную сборку. Или проверьте link.rsp или используйте команду nm, чтобы найти зависимый объект и собрать все их.

Для меня я был включен в Delphi, что вызвало ошибку ilink64 error fatal: unable to open file 'vcl.samples.spin.o'.

Поэтому я удалил Spin& включены Vcl.Samples.Spinвместо этого в коде Паскаля и компоновщик был удовлетворен. Эта ошибка возникала только в C++ Builder, а не в Delphi.

Другие вопросы по тегам