Странная ошибка компоновщика 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"
исправил проблему.