2014-01-08 30 views
0

我在Unix下使用Cgwin,Linux和HP-UX开发了一些代码。由于我不想从头开始做一些Windows的东西,我想用Visual Studio 2008编译代码。当然,我知道我必须做一些适配,关于系统特定的功能,如使用fcntl。我不是没想到,虽然,是似乎有问题,也使用像snprintf使用Visual Studio或MingW从Unix移植代码?

snprintf and Visual Studio 2010Error \t 4 \t error C3861: 'snprintf': identifier not found

因为还有很多其他的问题的标准功能,我使用的MingW考虑。据我所知,MingW是一个本地的Windows编译器吗?所以我仍然需要移植系统特定的东西,但是我想知道,如果转移到MingW会通过减少兼容性问题的数量给我带来任何好处。

我知道这可能被认为是基于opnion,但我不想比较MingW与MSVC,我只是想知道交换机是否会减少移植问题,或者如果它是浪费时间,并坚持MSVC。我之前已经移植过代码,但总是从Windows到Unix,这似乎比其他方式容易得多。

+0

标准Windows运行时库没有许多标准的功能。例如,它不是'sprintf'而是''_snprintf'](http://msdn.microsoft.com/zh-cn/library/2ts7cx93.aspx)。 –

+0

@JoachimPileborg,是的,但是当用谷歌搜索时,它似乎也有点不同。所以我想尽量减少这种影响。即使在这里,我也可以找到几个处理这个问题的帖子。我猜也有其他的,不是jsut snprintf。所以我想知道MingW是否对此有所帮助,因为我对此并不十分了解,并且使用Google搜索也没有多大帮助。 – Devolus

回答

1

据我了解,MingW平台是一个地道的Windows编译器吧?

如果通过本机,你的意思是Windows作为目标操作系统,那么是的。但是,如果你在考虑建筑主机 - 如果你想要的话。 MinGW是一个GCC端口,也可以为Linux构建。最新的Ubuntu既有X32和版本的MinGW,例如。

我想知道,如果转移到MingW将通过减少兼容性问题的数量给我带来好处 。

肯定是有的。使用GCC端口意味着您只需要解决与操作系统相关的问题,并跳过编译器和Microsoft库的差异。

+0

谢谢! '跳过编译器和微软库的差异'这是我不太确定的部分,而且我觉得很烦人。我会试试看。不想浪费时间安装所有东西再次找到相同的问题。 :) – Devolus

+1

值得一提的是,在*操作系统相关的问题*我的秋天也行为的一些标准功能,如'snprintf'在你的情况。 –

+0

我一直认为MingW是一个为本地Windows编程而构建的gcc包。那么,如果你说它也是为Linux构建的,那么这意味着什么呢? MingW和GCC是不同的编译器,只是基于类似的代码库? – Devolus