2010-11-15 72 views
0

我有一个C++ Builder XE项目与几个第三方控件。一些第三方控件没有特定的XE包,所以我结束了2010年和编译等...C++ Builder XE OBJ文件

经过许多回转后,我可以让我的项目编译但不链接。

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

我使用LMD VCL工具(http://www.lmdinnovative.com/products/vcl /)我认为这是从何而来。请参阅CBuilder 6项目和较旧版本的LMD工具中存在的Themesrv.obj文件。我的大型项目是将CBuilder6转换为XE,并下载了最新的2010版LMD控件; Builder6控件不能在XE下编译。

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

我甚至做了一些愚蠢的事情,例如将themesrv.obj文件复制到我的项目的构建空间中,以获取参考问题。

有关跟踪此问题的任何建议吗?我没有在项目经理中明确包含任何LIB或OBJ文件,并且我已经通过项目XML文件查找虚假参考文件...

想法/建议?

回答

2

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

在这种情况下,你似乎已经知道你正在处理哪一组软件包,所以你应该能够为你的项目添加正确的文件/路径引用。 Bpi文件应该列在软件包选项中,lib文件的路径应该位于目录和条件 - >库路径中,也可以明确地将.lib添加到您的项目中,但这不应该是必需的)

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

+0

好吧,所讨论的obj文件似乎并没有列出IDE组件列表中列出的任何控件。我从LMD工具的Cbuilder6版本转到了CBuilder 2010版本。其中一个显而易见的变化是消除了主题,因为他们现在可以在Borland产品本身中利用它(我猜)。我的项目在IDE中加载的所有组件都没有问题(它以前没有过),它编译干净就不会链接。就好像IDE在某种程度上认为我需要这个OBJ文件,并且我得到的是它没有在链接器命令行中列出,如项目属性中所示。 – Eric 2010-11-15 22:29:03

+0

@Eric,.obj文件对应一个源文件。软件包/组件的工作方式是将所有单个对象绑定在一起。您正在寻找包含.obj文件数据的正确.lib/.bpi文件。 (链接器将停止询问何时发现.lib/.bpi)您必须确保该文件是1)在Project-> Options-> Packages-> Build with runtime packages列表框中(假设复选框被选中) 2)可以在项目 - >选项 - >目录和条件 - >库路径中列出的其中一个路径上找到.lib文件,或者3).lib文件添加到项目中。 – 2010-11-16 00:18:42

+0

很明显,我知道一个obj文件对应一个源文件。有问题的源文件不再是第三方组件的新版本,但CBuilder不断抱怨说它由于某种原因缺少。这是一个孤立的OBJ文件,我不需要,但不知道如何说服C++ Builder!你会注意到我说这个问题不会在新项目中退出。 OBJ文件也不是所讨论的XML项目的一部分。 – Eric 2010-11-19 00:23:58