具体的操作就不说了,网上有很多,这里主要讲注意点:
一、引用的库文件要改变
首先最基本的一点,既然从MinGW改到了VS编译器,那相应的调用的库也需要改变,同样一个库文件,比如a.lib文件,用MinGW还是VS编译产生的a.lib,是不通用的,即在MinGW编译器编译的a.lib和在VS编译的a.lib是不通用的,如果你改到了VS编译器,就要用VS编译产生的a.lib库文件。
二、工程文档的编码方式需要改变
这个也是踩了很多坑才晓得的,为什么命名一段代码在MinGW下跑起来没有任何问题,而到了VS编译器下跑起来一堆报错呢?启示这其中很多不是因为代码本身的问题,比如出现一些什么奇奇怪怪的,例如:
- 未声明的标志符
- 常量中有换行符
- 语法错误:缺少XXX
之类的报错,十有八九是你的工程文件,即 *.h 或者 *.cpp的编码方式不同导致的。
在MinGW编译器下,默认使用的编码方式是GBK,而在VS编译器,你需要将头文件和cpp文件改到Unicode,这样就能避免很多的问题。
注意!直接通过UltraEdit等软件改编码到Unicode,会出现一些意料之外的问题,介绍一个改编码的方式比较靠谱的方法。
比如要修改a.cpp的编码方式,打开一个记事本,然后将a.cpp的代码复制进去,然后另存为,选择Unicode编码方式,命名为a.cpp,覆盖,这样比较靠谱。
三、增减或者修改一些库文件
有些库文件是编译器自带的库文件,在另一个编译器中是不带的,这个时候,你可以改成一些通用的库文件,比如math.h,在MinGW下是自带的,但是在VS中好像没有(感觉不应该没有哈,但我这儿的情况就是没有),于是我就替换成QtMath这个库。
四、其他
- 定义一个数组,MinGW可以直接写
int a[3]
,但是在VS中必须写成int *a=new int[3]
。 - 另外,网上有说对于界面文件的包含,即
#include "ui_mainwindow.h"
在MinGW中是写在mainwindow.cpp中的,而在VS中,要写在mainwindow.h中。这一点我感觉有点不靠谱。不过确实刚移植的时候,窗口文件修改以后不奏效,后来我是新建一个工程文件,将除了mainwindow和main以外的东西复制过去,再将界面里的内容复制过去来解决这个问题的。