Странная ошибка компоновщика C++ Builder DATA.BIND.OBJECTSCOPE.OBJ

Поэтому я перекомпилировал прекрасно работающий проект, и вдруг все, что я получил, это ошибка компоновщика:

[ilink32 Error] Fatal: Unable to open file 'DATA.BIND.OBJECTSCOPE.OBJ'

Проект представляет собой консольное приложение C++ с включенным VCL, и я понятия не имею, где DATA.BIND.OBJECTSCOPE.OBJ происходит от.

Это заголовки, которые я использую.

#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include <vector>
#include <vcl.h>
#include <System.hpp>
#include <System.IOUtils.hpp>
#include <System.Zip.hpp>
#include <System.Classes.hpp>
#include <System.IniFiles.hpp>

Я пытался полностью очистить диск, удалив все временные файлы и т. Д. Без изменений... Этот проект вчера прекрасно компилировался.

3 ответа

Я нашел это решение на багтрекере Embarcadero:

Добавьте следующее в один из ваших исходных файлов

#if defined(_WIN32) && !defined(_WIN64)

#pragma link "Data.Bind.ObjectScope.obj"

#endif

Оригинальное решение было предоставлено здесь. https://plus.google.com/103589122222763968447/posts/gSwPfUZLPEH

Я добавлю это сюда, если кто-то еще наткнется на эту крайне неприятную проблему.

У меня была именно эта проблема. Это произошло, когда я включил REST.Client.hpp в проекте Embarcadero RAD Studio, который использует C++ Builder. Через несколько часов я бросил клиентский компонент REST в форму конструктора GUI. Boom. Работает. Именно этот сайт привел меня на правильный путь.

В нем говорится, что записи ссылок #pragma включаются в исходные файлы автоматически, когда вы помещаете компонент в форму.

По моему опыту, это вызвано тем, что библиотека или элемент управления, который использует ваш проект, решает, что ему нужно DATA.BIND.OBJECTSCOPE (например, из-за uses пункт в коде Delphi или #pragma link в коде C++Builder).

Быстрое, но не элегантное решение проблемы:

  • Определите, какой .lib файл включает это .obj файл. (Вы можете сделать это, перейдя в каталоги библиотек для RAD Studio и любых сторонних библиотек, которые вы используете, и выбрав .obj имя файла, или команда TLIB может перечислить .obj файлы в .lib.)
  • Отредактируйте свой .cbproj файл в текстовом редакторе, чтобы добавить эту библиотеку в LinkPackageStatics а также AllPackageLibs разделы.

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

Добавление к ответам, поскольку ни один из приведенных выше ответов не исправил мой проект с той же ошибкой компоновщика.

Включая заголовок Vcl.Bind.Consts.hpp, т.е.

#include "Vcl.Bind.Consts.hpp"

исправил проблему.

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