从Code :: Blocks移植到Visual Studio 2010

时间:2014-12-23 13:38:22

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

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

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

  • 的Lua
  • SDL 2.0 + SDL Image 2.0
  • 的OpenGL

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:2)

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

您指的是哪种项目?它是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似乎更复杂。我的猜测是你可以在这里开始大量的移植工作。

答案 2 :(得分:2)

试一试!

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

请注意,不同的编译器以不同的方式支持C ++;例如,即使Visual Studio 2013也只提供C ++ 11支持,所以如果你的程序是一个C ++ 11程序,其中包含ranged-for和initializer list,depending on the version you're using,它就不会没有那些代码被重写的工作看起来更像C ++ 03。

答案 3 :(得分:0)

我实际上犯了一个错误: C :: B确实告诉我在使用MSVC2010编译器的编译尝试中存在多个错误,因为代码包含许多仅限Unix的库,过于复杂,因此容易避免。因此,我想要么让MinGW / GCC在Visual Studio中工作,要么坚持使用C :: B.

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