假设我有一个开源C :: B C ++(非C ++ 11,完全兼容1998 ISO标准)我下载的项目是使用MinGW / GCC(TDM-1 4.7.1或4.7) .2 - 不适用于最新版本),我可以将源文件从它移植到Visual Studio 2010,并能够在没有大量代码重写的情况下使其工作吗?或者在某些情况下它是不可能的?或者它取决于各种各样的事情?
编辑: 该代码依赖于其他外部实用程序和库,例如:
答案 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)