从 Code::Blocks 移植到 Visual Studio 2010

Porting from Code::Blocks to Visual Studio 2010

本文关键字:Visual Studio 2010 Code Blocks      更新时间:2023-10-16

>假设我有一个开源的 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

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

你指的是什么样的项目?是wxWidget,QT4,GTK+,OpenGL吗?你使用多少 c++11?

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

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

当然,你也必须安装带有MSVC2010的代码::块。

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

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

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

试试吧!

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

请注意,不同的编译器以不同的方式支持C++;例如,即使是Visual Studio 2013也只通过了C++11支持,所以如果你的程序是一个C++11程序,其中包含诸如ranged-for和初始值设定项列表之类的内容,那么根据您使用的版本,如果不重写这些代码片段以使其看起来更像C++03,它将无法工作。

我实际上犯了一个错误:C::B 确实告诉我,在使用 MSVC2010 编译器进行编译时存在多个错误,因为代码包含许多仅限 Unix 的库,过于复杂,不容易避免。因此,我正在考虑让MinGW/GCC在Visual Studio本身中工作,或者坚持使用C::B。

(此处继续:Visual Studio 2013中的POSIX Headers(来自MinGW项目(