从 Code::Blocks 移植到 Visual Studio 2010
Porting from Code::Blocks to Visual Studio 2010
>假设我有一个开源的 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项目(
- Visual Studio 2015:Extern "C" 和 "export" 关键字
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 试图在visual studio上用C++创建一个桌面应用程序
- 如何在MS Visual Studio 2019中运行QT UI
- 如何使用Visual Studio 2017在C++中为参数化对象数组使用唯一指针
- Visual Studio Code - C++ Debugger 無法啟動
- Visual Studio 2019:插入多个C++风格的单行注释
- Visual Studio Code "undefined reference to `WinMain@16'"
- Visual studio代码重构似乎不起作用(例如,重命名符号-f2)
- Visual Studio中的函数声明和函数定义问题
- 如何指定我希望我的LIB链接到的DLL文件?-Visual Studio 2019
- Visual Studio mkl_link_tool.exe链接错误
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- 不同的Visual Studio版本中缺少.dll
- 用Visual Studio在C++中嵌入Julia
- Visual Studio 2017循环自动向量化问题
- 有没有办法在远程设备上打开和编辑visual Studio 2017解决方案
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- Visual Studio在尝试读取resource.txt文件时崩溃
- Visual Studio 2017 不允许我创建 C++ 专用模板