• 6952阅读
  • 3回复

VS2008 +QT 开发的跨平台问题 ? [复制链接]

上一主题 下一主题
离线zhihua36
 

只看楼主 倒序阅读 楼主  发表于: 2010-09-03
— 本帖被 XChinux 执行加亮操作(2010-09-03) —
QT跨平台,是指"一次开发,多次编译"..

我想问:1) 开发程序是不是得完全使用QT命令才可以实现跨平台?...我的程序涉及 较多的VC++函数 ,能实现跨平台吗?.

我是新手,求教高手啊...
离线dbzhang800

只看该作者 1楼 发表于: 2010-09-03
如果你用了一堆windows特有的东西,显然你不能期待它能跨平台。

不过如果你足够小心,将windows特有的东西都用 预处理语句包住,并为其他平台提供替代的功能,倒不会有什么问题。
离线sbtree
只看该作者 2楼 发表于: 2010-09-03
所谓的Qt跨平台,无非是一个包装而已,他的包装就是实现了适应多种不同操作系统下的不同编译器,这就要求实现同一功能的代码要对不同的编译器和不同的操作系统分别进行考虑,也就是我们说的条件编译。而目前所流行的C++库"跨平台"说法,无非都是利用条件编译,针对特定的系统使用特定的代码实现相同的功能罢了。当然了,那些用最基本的C/C++(目前所有编译器都兼容的那一部分)写的代码自然不用条件编译了。

其实C++本身根本就没定义平台的限制,理论上讲,所有C++的原生类(标准库)都应该是跨平台的。但是另一方面不是所有的编译器都实现了C++的语言标准,所以这里还涉及到编译器的兼容性问题。另外跨不跨平台还要看你的代码是不是调用了依赖操作系统的函数。

回过头来讲,任何一个程序几乎都要使用到系统的资源,所以操作系统的接口函数又是必不可少的。而你一旦用了这些接口,你的代码自然就受到了平台的限制。怎么办呢?学习Qt吧,使用条件编译。看看Qt的源代码就会发现,里面大量的使用了操作系统的接口函数和条件定义。

这就是目前流行的跨平台。本质上讲,所谓的跨平台是没有什么高深技术可言的,它的后边依然存在着一个很大的依赖性。Qt依赖于代码的条件编译,Java依赖于它的虚拟机等等。当然这种简单的思想实现起来是要考虑很多方面的,暂且不论。
windows 7 + VC++2008 + Qt4.5.2
离线htyoung

只看该作者 3楼 发表于: 2010-09-04
只要你用的是qt 的库100%可以跨平台, vc++的函数要看是那种。纯 C/C++的没问题,microsoft的可能要用QT库替代。
***
QT5
***
快速回复
限100 字节
 
上一个 下一个