【问题标题】:C++ Builder XE OBJ fileC++ Builder XE OBJ 文件
【发布时间】:2010-11-15 03:06:28
【问题描述】:

我有一个带有多个 3rd 方控件的 C++ Builder XE 项目。一些第 3 方控件没有特定的 XE 包,所以我最终选择了 2010 并编译等...

经过多次旋转,我可以让我的项目编译但不能链接。

我收到错误: [ILINK32 错误] 致命:无法打开文件 'THEMESRV.OBJ'

我正在使用 LMD VCL 工具 (http://www.lmdinnovative.com/products/vcl/),我认为这是来自哪里。看,在 CBuilder 6 项目和旧版本的 LMD 工具中存在一个 Themesrv.obj 文件。我更大的项目是从 CBuilder6 转换为 XE,因此我下载了 LMD 控件的最新 2010 版本; Builder6 控件无法在 XE 下编译。

现在,如果我创建一个全新的 XE 项目并包含一些来自 LMD 组件的可疑控件,我会得到干净的编译和链接。

我什至做了一些愚蠢的事情,比如将 Themesrv.obj 文件复制到我的项目的构建空间中,只是为了解决参考问题。

有什么关于追踪这个的建议吗?我没有在我的项目管理器中明确包含任何 LIB 或 OBJ 文件,并且我已经浏览了项目 XML 文件以寻找虚假引用...

想法/建议?

【问题讨论】:

    标签: c++builder


    【解决方案1】:

    对于包/组件,在这种情况下您真正需要的几乎不是 .obj 文件。它是 .lib 文件或 .bpi 文件(取决于您是否使用静态/动态链接)

    在这种情况下,您似乎已经知道您正在处理哪一组包,因此您应该能够为您的项目添加正确的文件/路径引用。 Bpi 文件应该在包选项中列出,lib 文件的路径应该在 Directories and Conditionals->Library paths 中,您也可以将 .lib 显式添加到您的项目中,但这不是必需的)

    如果您不确定要使用哪个 lib/bpi 文件,tdump 可以成为您的盟友。在这些文件上运行 tdump 应该会显示一行,上面写着“implements: WHATEVER.obj”。

    【讨论】:

    • 好吧,有问题的 obj 文件似乎不属于 IDE 组件列表中列出的任何控件。我从 LMD 工具的 Cbuilder6 版本升级到他们的 CBuilder 2010 版本。明显的变化之一是删除了主题,因为它们现在可以在 borland 产品本身中利用它(我猜)。我的项目在 IDE 中加载所有组件都很好(以前没有),它编译干净只是不会链接。就好像 IDE 以某种方式认为我需要这个 OBJ 文件,但让我明白的是它没有在链接器命令行中列出,如项目属性中所示。
    • @Eric,一个 .obj 文件对应一个源文件。包/组件的工作方式是获取所有单独的 obj 并将它们捆绑在一起。您正在寻找包含 .obj 文件数据的正确 .lib/.bpi 文件。 (链接器将在找到 .lib/.bpi 时停止询问)您必须确保该文件是 1) 在 Project->Options->Packages->Build with runtime packages 列表框中(假设复选框已选中) 2) .lib 文件可以在 Project->Options->Directories and Conditionals->Library path 中列出的路径之一中找到,或者 3) .lib 文件已添加到项目中。
    • 显然,我知道 obj 文件对应于源文件。有问题的源文件不再是新版本的 3rd 方组件的一部分,但 CBuilder 一直抱怨它由于某种原因丢失了。这是一个我不需要但不知道如何说服 C++ Builder 的孤立 OBJ 文件!你会注意到我说这个问题不会出现在新项目中。 OBJ 文件也不是相关 XML 项目的一部分。
    • 原来是路径问题。搜索链更高的另一条路径具有来自旧版本的主题 OBJ 文件....
    猜你喜欢
    • 2016-05-27
    • 2023-04-07
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多