繁体   English   中英

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

[英]Strange C++ Builder Linker error DATA.BIND.OBJECTSCOPE.OBJ

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

[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>

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

根据我的经验,这是当您的项目使用的库或控件决定它需要DATA.BIND.OBJECTSCOPE (例如,由于 Delphi 代码中的uses子句或 C++Builder 代码中的#pragma link )。

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

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

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

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

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

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

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

#endif

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

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

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

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

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

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

#include "Vcl.Bind.Consts.hpp"

解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM