3

所以我重新编译了一个完美的工作项目,突然间我得到的只是这个链接器错误:

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

该项目是一个启用了 VCL 的 C++ 控制台应用程序,我不知道它的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>

我试图做一个完整的磁盘清理,删除所有临时文件等......没有变化......这个项目昨天编译得很好。

4

4 回答 4

3

如果其他人偶然发现这个非常令人沮丧的问题,我会在此处添加此内容。

我有这个确切的问题。它发生在我包含REST.Client.hpp在使用 C++ Builder 的 Embarcadero RAD Studio 项目中时。在浪费了几个小时之后,我最终将 REST 客户端组件放到了 GUI 设计器表单上。繁荣。作品。正是这个网站让我走上了正确的道路。

它表示当您将组件放入表单时,#pragma 链接条目会自动包含在源文件中。

于 2018-08-02T11:53:26.137 回答
2

以我的经验,这是当您的项目使用的库或控件决定它需要DATA.BIND.OBJECTSCOPE时引起的(例如,由于usesDelphi 代码中的子句或#pragma linkC++Builder 代码中的子句)。

一个快速但一点也不优雅的修复:

  • 确定哪个.lib文件包含此.obj文件。(您可以通过转到 RAD Studio 的库目录和您正在使用的任何第三方库并 grepping.obj文件名来完成此操作,或者 TLIB 命令可以列出 .) 中的.obj文件.lib。)
  • 在文本编辑器中编辑您的.cbproj文件以将该库添加到LinkPackageStaticsAllPackageLibs部分。

根据您的项目设置(无论您是否使用运行时包,无论您是静态链接还是动态链接),您都可以进入项目选项、包和项目选项、包、运行时包和编辑包列表那里,而不是.cbproj直接编辑。

于 2015-03-11T15:11:50.227 回答
2

我在 Embarcadero 错误跟踪器上找到了这个解决方案:

将以下内容添加到您的源文件之一

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

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

#endif

此处提供了原始解决方案。 https://plus.google.com/103589122222763968447/posts/gSwPfUZLPEH

于 2016-11-15T10:25:17.743 回答
0

添加到答案,因为上述答案都没有修复我的项目,具有相同的链接器错误。

包括 Vcl.Bind.Consts.hpp 头,即

#include "Vcl.Bind.Consts.hpp"

解决了这个问题。

于 2020-11-10T17:47:01.147 回答