奇怪的C++ Builder链接错误DATA.BIND.OBJECTSCOPE.OBJ

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个回答

3
如果有人遇到这个极其令人沮丧的问题,我会在此处添加。 我曾经遇到过这个问题。 当我在使用C ++ Builder的Embarcadero RAD Studio项目中包含REST.Client.hpp时发生了这种情况。浪费数小时后,我最终将REST客户端组件拖放到GUI设计器表单上。嘭。可以工作了。正是这个网站让我找到了正确的方法。

它说,当您将组件放到表单上时,#pragma link条目会自动包含在源文件中。


3

2
根据我的经验,这种情况通常是因为你的项目使用的库或控件决定需要 DATA.BIND.OBJECTSCOPE(例如,在 Delphi 代码中的 uses 子句或 C++Builder 代码中的 #pragma link)。
一个快速但不太优雅的解决方法是:
  • 确定哪个 .lib 文件包含了这个 .obj 文件。(可以通过前往 RAD Studio 和任何第三方库的库目录并搜索 .obj 文件名,或者使用 TLIB 命令列出 .lib 中的 .obj 文件来完成。)
  • 在文本编辑器中编辑你的 .cbproj 文件,将该库添加到 LinkPackageStaticsAllPackageLibs 部分。
根据你的项目设置(是否使用运行时包、是否静态链接或动态链接),你可能可以在“项目选项”下的“包”和“项目选项”下的“包,运行时包”下编辑包列表,而不是直接编辑 .cbproj 文件。

这是一个控制台应用程序,因此没有uses#pragma link。我已经打开了静态链接。然而,你的解决方案并没有解决问题,但是你指引了我正确的方向。我只是创建了一个新项目,将我的代码复制过去,然后它就正常工作了。 - Max Kielland

0

在编程方面,补充一下答案。由于以上答案都没有解决我的项目问题,因为我遇到了相同的链接器错误。

解决方法是包含Vcl.Bind.Consts.hpp头文件,即

#include "Vcl.Bind.Consts.hpp"

问题已修复。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接