c++ - 使用C++生成问题-C++/CLI-C#项目(Borland和VS特定组件)

标签 c++ visual-studio build-process c++builder

堆栈溢出!

今天的问题有点奇怪,但是请忍受我。任何意见/建议都非常感谢!

我已经在一个项目中继承了一个旧的代码库,该项目的某些组件可以追溯到2002年。该项目根本没有任何文档,并且建立了该版本的原始计算机也不再存在(硬盘驱动器出现故障,没有可用的备份...)。该系统与机器人 ARM 互动并对其进行控制。我具有完整安装,并且可执行文件已安装在具有适当硬件的测试计算机上。源位于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。新手警报!

  • Borland C++ Builder 6请求缺少几个.bpi文件(相应的.bpl文件可从测试计算机上的安装中获得)。
  • 执行预构建批处理文件似乎可以正确执行。
  • 我已经下载了C++ Builder 2010的试用版,并已将项目导入其中。在似乎是
    正确的targer我收到以下错误(在出现一些提示,提示丢失文件后...我尝试设置链接器和编译
    避免这些的选项,但老实说,我不知道这些是外部依赖性还是Borland组件
    已安装)

    正在检查项目依赖项...
    生成LoggingDebug.cbproj(调试配置)

    [BCC32错误] is_array.hpp(40):E2430在重新声明“is_array”时模板参数的数量不匹配

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

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

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

    [BCC32错误] 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::type”的多个声明

    [BCC32错误] ct_if.hpp(30):E2344早期声明了“ct_and::type”

    [BCC32错误] function_base.hpp(157):E2238“function_return_type::type”的多个声明

    [BCC32错误] function_base.hpp(152):E2344早期声明了“function_return_type::type”

    [BCC32错误] align_of.hpp(37):E2468不允许类型为void的值

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

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

    [BCC32错误] align_of.hpp(37):E2468不允许类型为void的值

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

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

    [BCC32错误] align_of.hpp(37):E2468不允许类型为void的值

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

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

    [BCC32错误] align_of.hpp(37):E2468不允许类型为void的值

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

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

    [BCC32错误] if.hpp(131):E2270>预期

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

    [BCC32错误] type_with_alignment.hpp(271):E2238'type_with_alignment <2>::type'的多个声明

    [BCC32错误] type_with_alignment.hpp(268):E2344早期声明了'type_with_alignment <2>::type'

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

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

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

    [BCC32错误] void.hpp(71):E2270>预期

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

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

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

    [BCC32错误] or.hpp(50):E2015“aux”和“mpl _::aux”之间的歧义

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

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

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

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

    [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>::type'

    [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

  • 确切的错误取决于我从存储库中提取源的哪个版本而有所不同,但是考虑到这件事显然是在“适当条件下”完美构建的,因此,大量错误肯定暗示着外部依赖项,项目设置等问题。

    最佳答案

    but the developers left before I started

    the hard drive failed and there is no backup available

    I can't get it to build in either without dozens of errors.


    整个过程中都写了软件项目灾难。您可能是在最后一次尝试中被雇用,目的是通过向问题扔肉来挽救投资。你是肉即使原始开发人员也放弃了它,您也有机会挽救它。
    您需要获得管理团队的 promise ,才能有任何机会使这一目标圆满结束。坚持以下几点:
  • 他们应该聘请至少一名原始的首席工程师,以高得离谱的顾问费来进行调整,以确保没有!不是一个选择。
  • 他们应该雇用数据恢复公司来获取故障磁盘上的信息
  • 他们应该购买用于构建产品的所有原始工具。如果供应商不再提供它们,请查看拍卖网站,例如ebay。不要将时间浪费在试用版上。

  • 如果您发现他们对执行这些步骤有任何犹豫,请别忙了。

    关于c++ - 使用C++生成问题-C++/CLI-C#项目(Borland和VS特定组件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3439178/

    相关文章:

    java - 如何将 CVS 与 maven-release-plugin 一起使用?

    c++ - Windows XP 上的 TBB(在 OpenCV 中使用)- 错误入口点 InitializeCriticalSectionEx

    c++ - 将项目与静态构建 curl 链接

    c++ - 如何从 C++ 程序中删除多个空格并用一个空格代替它

    c++ - 球体旋转 OpenGL

    azure - Visual Studio 使用 Godaddy 的电子邮件地址登录我的 Azure 订阅

    python - 用 Python Boost 包装 C++ operator()

    c++ - 如何控制 DLL 的搜索顺序以避免劫持?

    powershell - 将值从 powershell 传递到 TFS 构建工作流程

    xcode4 - Xcode 4 工作区 : adding framework from project B as dependency to project A