2010-12-01 79 views
3

我正在考虑一个程序的两个选项。无论是C++与Boost异步IO或Java与异步NIO。我知道只要系统具有Java运行时,Java就是可移植的。我宁愿使用C++和Boost,但我不确定我编写的程序是否可以移植到不同的Windows计算机并仍然运行。我需要做些什么来确保程序在运行时具有所有必需的依赖关系?我计划只使用windows.h,C++ 2003标准和Boost库。Boost Windows程序是否可移植到其他Windows系统?

回答

3

只要你使用Boost,C++标准库(和CRT,如果你觉得你必须的话),你的代码将非常容易移植。

请确保您避免使用任何微软CRT扩展程序,例如str*_s函数(例如here) - 不幸的是,MSDN不会很好地将它们标记为非标准。

还要避免在Visual C++ v10中使用C++ 0x功能以最大限度地提高短期内的可移植性 - 或者检查您打算使用的其他编译器是否具有您计划使用的功能。

小心:如果您使用了一堆windows.h中的东西,那么您将会破坏可移植性并增加您需要执行的工作。如果您希望稍后再移植,尽可能避免这种情况,并且如果您确实需要从那里获取任何内容,请尝试将不同的“我需要在更改此端口时更改此属性”标题和代码文件中的用法隔离开来,以便您知道您在移植到另一个操作系统时只需查看代码的子集。

6

boost和CRT可以静态链接到您的可执行文件,所以根本不会有任何外部依赖。

+0

哦,因为boost库是可移植的,所以它应该能够静态链接并在Mac OS X上构建XCode上的可执行文件应该在Windows上运行(只要在链接之前处理非可移植库)...... ? – Aaron 2010-12-01 18:02:14

+4

在你的问题中,你会谈论不同的Windows平台,但现在你对在Windows平台上运行的Mac OS中创建可执行文件发表评论。你最初的意思是不同的操作系统?这会在一定程度上改变答案,尽管在一定程度上可以使用基本类似的代码库。 – Bart 2010-12-01 18:16:01

相关问题