[英]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
文件,将该库添加到LinkPackageStatics
和AllPackageLibs
部分。 根据您的项目设置(无论您是否使用运行时包,无论您是静态链接还是动态链接),您都可以进入项目选项、包和项目选项、包、运行时包下并编辑包列表在那里,而不是直接编辑.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.