2010-12-01 35 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

相關問題