【问题标题】:Porting from Code::Blocks to Visual Studio 2010从 Code::Blocks 移植到 Visual Studio 2010
【发布时间】:2014-12-24 08:01:11
【问题描述】:

假设我下载了一个开源 C::B C++(非 C++11,与 1998 ISO 标准完全兼容)项目,该项目使用 MinGW/GCC(TDM-1 4.7.1 或 4.7 .2 - 不适用于最新版本),;我可以将源文件从它移植到 Visual Studio 2010 并且能够在不重写大量代码的情况下使其工作吗?或者在某些情况下是不可能的?还是取决于各种情况?

编辑: 该代码依赖于额外的外部实用程序和库,例如:

  • 卢阿
  • SDL 2.0 + SDL 图像 2.0
  • OpenGL

【问题讨论】:

  • 编辑:我已经更新了一些信息。

标签: c++ visual-studio-2010 codeblocks


【解决方案1】:

最普遍和最正确的回答是:取决于各种事情

您指的是哪种项目?是 wxWidget、QT4、GTK+、OpenGL 吗? 你用多少c++11?

假设我们正在讨论一个简单的Console Application,验证是否可以迁移到 MSVC2010 的最简单方法是在 Code::Blocks 项目中切换编译器。

选择Project->Build Option... 并在Selected compiler 下选择Microsoft Visual Studio C++ 2010。之后尝试重新编译。警告和错误将向您展示移植的难易程度。

当然你也必须用 MSVC2010 安装 Code::Blocks。

编辑:MSVC2010 支持 OpenGL 库,并且 libsdl 具有 VC 开发库。然而,Lua 的情况似乎更复杂。我猜你可能会在这里开始大量的移植工作。

【讨论】:

  • 没有使用 C++11,标准 1998 ISO 编译非常好,MSVC2010 编译停止invalid numeric argument '/Wno-sign-compare'。编辑:我已经添加了使用的库。
  • @Banderi:如果您对特定编译器的特定代码段有特定问题,请构建一个 minimal testcase 来演示该问题并询问有关它的特定问题。
  • @Banderi /Wno-sign-compare 不重要,可以关闭。还编辑了对图书馆的回应。
  • 嗯。好吧,这听起来很糟糕。我会尝试在 VS2010 中再次导入文件,如果遇到任何重大问题,我可能会提出新问题,谢谢。
【解决方案2】:

如果项目是使用可移植的 C++98 代码编写的,那么您应该不会遇到太多麻烦。首先,我会检查您是否可以使用 -std=c++98 -pedantic 标志在 GCC 中编译并修复任何警告以确保您不依赖任何 GCC 扩展。

这还取决于任何所需库的可移植性。

【讨论】:

  • 另外,你为什么要在回答中提问? ://
  • 没有警告,编译得很好。 VS的版本问题不大,但是我用了好多年了,很难改,目前还是用的比较多的。
  • @LightnessRacesinOrbit 我使用的是 ?作为 if 的简写,有点像三元运算符 :)
【解决方案3】:

试试吧!

如果您的代码符合标准并且不依赖任何 GCC 扩展或 GCC 特定库,那么您应该可以开箱即用。

请注意,不同的编译器以不同的方式支持 C++;例如,即使 Visual Studio 2013 也只通过了 C++11 支持,所以如果您的程序是一个 C++11 程序,其中包含诸如 ranged-for 和初始化列表之类的东西,那么 depending on the version you're using,它就无法正常工作这些代码被重写,看起来更像 C++03。

【讨论】:

  • 不涉及 C++11。有没有办法在不手动扫描代码的情况下检查项目可能依赖的 GCC 特定扩展/库?
  • @Banderi:在 Microsoft Visual Studio 中打开您的代码并尝试构建它。您会很快发现是否有问题。
  • 这实际上是我尝试做的第一件事......它并不顺利。我可能做错了。我已经创建了一个“从现有代码新建项目”,但也许有些设置我忽略了,或者它根本不那么简单,这就是我问的原因。有没有“正确”的方法来做到这一点?或者你想让我描述一下 VS 给我带来的主要问题吗?但这听起来可能有点过时,如果是这样,我将为主要问题提出一个新问题。
【解决方案4】:

我实际上犯了一个错误: C::B 确实告诉我,在使用 MSVC2010 编译器的编译尝试中存在多个错误,因为代码包含许多仅 Unix 的库,太复杂以至于难以避免。因此,我正在考虑要么让 MinGW/GCC 在 Visual Studio 本身中工作,要么坚持使用 C::B。

(在此处继续:POSIX Headers (from MinGW project) in Visual Studio 2013

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-06
    • 1970-01-01
    相关资源
    最近更新 更多