2010-08-09 40 views
1

StackOverflow!用C++编译问题 - C++/CLI - C#项目(Borland和VS特定组件)

今天的问题有点奇怪,但请耐心等待。任何意见/建议非常感谢!

我已经在一个项目上继承了一个旧的代码库,其中一些组件的历史可追溯到2002年。这个项目没有任何文档,并且已经建立的构建的原始机器不再存在(硬驱动器失败并且没有可用的备份...)。该系统与机器人手臂交互并对其进行控制。我有一个完整的安装和可执行文件安装在测试机器上,使用适当的硬件。源代码位于Subversion存储库中,但日志消息很少,并且没有提供实用建议。最近一月就已经开始工作了,但是开发者离开之前就离开了。它被部分重新编写了一个新的基于C#的GUI。该项目由C++,C++/CLI和C#组成。它使用Boost和VTK。 简而言之,我的问题是:软件的控制部分存在客户端关键错误,我无法构建项目。没有可用的调试符号,并附上正在运行的EXE不起作用(可能的原因为什么在下面)。在我尝试过的任何配置下,无论是C# 之前的版本还是最新的源代码版本。

使问题变得更加复杂化,虽然我不确定这个问题,但是这个项目曾经是通过Borland C++ Builder V6构建的,并且已经被迁移到Visual Studio。它仍然包含Borland特定的组件,尽管其中大部分似乎都是有条件的。

我的经理发誓,它会不是建立在VS下,并且必须在Borland中完全编译。问题是我不能在没有几十个错误的情况下建立它。确实有Borland特定的组件(BPL文件),但我不知道它们是什么,或者它们如何与项目结构相关。

我想知道是否需要在Borland和VS中构建,或者类似的东西。所以,我的问题是:是否有任何方法可以尝试和推断如何构建这个东西,还是只是尝试每个选项的问题,直到我击中了正确的一个?

编辑:错误日志如下。请注意:我很熟悉VS,但直到几天前我才使用过Borland。 Noob警报!

  • Borland C++ Builder 6请求缺少几个.bpi文件(对应的.bpl文件可从安装在测试机器上)。

  • 执行预生成批处理文件似乎执行没有错误。

  • 我已经下载了C++ Builder 2010的试用版,并且已经导入了该项目。对似乎是 正确的targer执行'Build All'我得到以下错误(在缺少文件的某些提示后......我试着设置链接器和编译 选项来避免这些,但说实话,我不知道这是否是外部依赖或没有安装 Borland的组件)

    检查项目依赖... Building LoggingDebug.cbproj(调试配置)

    [BCC32错误] is_array。HPP(40):模板参数E2430数量不 'is_array' 重复声明匹配

    [BCC32错误] is_array.hpp(40):E2428模板必须是类或函数

    [BCC32错误] is_array .HPP(41):E2428模板必须是类或函数

    [BCC32错误]:模板参数E2430数量不 'is_array'

    [BCC32错误] is_array.hpp(41)重复声明匹配is_array.hpp(42):E2430重新声明'is_array'时模板参数的数量不匹配

    [BCC32错误] is_array.hpp(42):E2428模板必须是类或函数

    [BCC32错误] is_array.hpp(43):模板参数E2430数量不 'is_array' 重复声明匹配

    [BCC32错误] is_array.hpp(43):E2428模板必须是类或函数

    [BCC32错误] ct_if.hpp(31):E2238多个声明关于 'ct_and ::类型'

    [BCC32错误] ct_if.hpp(30):E2344早先声明'ct_and :: type'

    [BCC32错误] function_base.hpp(157):为 'function_return_type ::类型'

    [BCC32错误] function_base.hpp(152)E2238多个声明: 'function_return_type ::类型' 的E2344原先的声明

    [BCC32错误] alignment_of.hpp(37):类型空隙E2468值是不允许的

    [BCC32错误] alignment_of.hpp(56):E2450未定义结构 'alignment_of_hack'

    [BCC32错误] alignment_of.hpp(56):E2109不是允许的类型

    [BCC32错误] alignment_of.hpp(37):类型空隙E2468值是不允许的

    [BCC32错误] alignment_of.hpp(56):E2450未定义结构 'alignment_of_hack'

    [BCC32错误] alignment_of.hpp(56):E2109不允许使用的类型

    [BCC32错误] alignment_of.hpp(37):类型空隙E2468值是不允许的

    [BCC32错误] alignment_of.hpp (56):E2450未定义的结构'alignment_of_hack '

    [BCC32错误] alignment_of.hpp(56):E2109不允许使用的类型

    [BCC32错误] alignment_of.hpp(37):类型空隙E2468值是不允许的

    [BCC32错误] alignment_of.hpp(56):E2450未定义结构 'alignment_of_hack'

    [BCC32错误] alignment_of.hpp(56):E2109不允许使用的类型

    [BCC32错误]如果。HPP(131):E2270>预期

    [BCC32错误] if.hpp(131):E2321声明没有指定的标签或标识符

    [BCC32错误] type_with_alignment.hpp(271):E2238多声明关于 'type_with_alignment < 2> ::类型'

    [BCC32错误] type_with_alignment.hpp(268):将E2344早些时候声明 'type_with_alignment < 2> ::类型'

    [BCC32错误] not.hpp (40):E2015'aux'和'mpl _ :: aux'之间的歧义

    [BCC32错误] not.hpp(47):E2270>预期

    [BCC32错误] not.hpp(47):E2321声明没有指定的标签或标识符

    [BCC32错误]空隙.HPP(71):E2270>预期

    [BCC32错误] void.hpp(71):E2321声明没有指定的标签或标识符

    [BCC32错误] void.hpp(72):E2270 >预计

    [BCC32错误] void.hpp(72): E2321声明没有指定的标签或标识符

    [BCC32错误] or.hpp(50):E2015 '辅助' 和 'MPL _ ::辅助'

    [BCC32错误] or.hpp之间歧义( 62):E2270>预期

    [BCC32错误] or.hpp(62):E2321声明没有指定的标签或标识符

    [BCC32错误] eval_if.hpp(67):E2270>预期

    [BCC32错误] eval_if.hpp(67):E2321声明未指定标签或标识IER

    [BCC32错误] identity.hpp(40):E2270>预期

    [BCC32错误] identity.hpp(40):E2321声明没有指定的标签或标识符

    [BCC32错误] identity.hpp(41):E2270>预期

    [BCC32错误] identity.hpp(41):E2321声明没有指定的标签或标识符

    [BCC32错误] yes_no.hpp(35 ):E2238'yes_no_tag < 1> :: type'

    [BCC32错误] yes_no.hpp(30):的E2344早些时候声明 'yes_no_tag < 1> ::类型'

    [BCC32错误] assert.hpp(79):E2270>预期

    [BCC32错误] assert.hpp(79):E2321声明没有指定的标签或标识符

    [BCC32错误] arg.hpp(21):E2270>预期

    [BCC32错误] ARG。HPP(28):E2321声明没有指定的标签或标识符

    [BCC32错误] arg.hpp(28):E2228太多错误或警告消息

    失败

    经过时间:00 :00:36.2

精确误差的变化取决于哪一个版本我从仓库拉源的,但考虑到这件事情显然构建完美的大量错误的“在适当的条件下,”肯定意味着问题与外部依赖关系,亲JECT设置等

+0

如果您给我们编译器错误日志,我们可能能够帮助您找出错误。 – 2010-08-09 10:48:58

+0

@Merlyn:谢谢,这是一个很好的建议。我会把一些更多的信息:-) – HypersonicNinja 2010-08-09 11:01:35

回答

4

但开发商离开之前,我开始

硬盘驱动器失败,没有可用的

我不能让它建立在没有任何错误数十备份。

这都写满了它的软件项目的灾难。你可能被雇用在最后一次尝试通过在这个问题上投掷肉来拯救投资。你是肉。这个几率很低,甚至当原始开发者放弃它时,你也能够拯救它。

你需要得到管理团队的承诺有任何机会都将这一好下场。坚持以下几点:

  • 他们应该雇用至少一名原始的首席工程师,以获得高得离谱的咨询费,校准以便不!不是一种选择。
  • 他们应该聘请数据恢复公司从故障磁盘获取信息
  • 他们应该购买用于构建产品的所有原始工具。如果他们不再可以从供应商那里看看拍卖网站,如eBay。做不是浪费你的时间与试用版。

如果你在他们看到任何犹豫,承诺这些步骤,让地狱离开那里。

+0

感谢您的理智检查,汉斯。这里的所有项目都是类似的:没有文档,开发人员放弃和离开,未完成,充满了错误和不良做法。即使是存储库也是一团糟。幸运的是,我很快就关闭了,但是我希望在我去之前尝试解决(有点)。无论如何,很高兴听到这不仅仅是我想知道我是否在一座小山上爬山! – HypersonicNinja 2010-08-09 14:08:05

1

我得到类似的错误,当我提出我的项目从2006年到Borland公司的Borland XE。解决方案是,我的代码包含来自boost_1_34的文件。我从项目中删除了包含路径,并使用随新IDE一起提供的boost库。程序编译成功