2011-08-02 196 views

回答

5

如果它是實際正確和標準的C++代碼,那麼它將在任何平臺上運行而不需要修改。如果不是,那麼......你沒有提供足夠的細節來回答這個問題。

+1

如果使用某些特定於Linux的庫的正確和標準C++代碼會怎樣? – svick

1

如果你沒有考慮到可移植性,轉換軟件是一件大事。

很明顯,第一步是獲得windows(vC++)的C++編譯器選擇並嘗試編譯。

如果您在很大程度上依賴於網絡/文件系統/線程考慮使用像boost::threadboost::filesystemboost::asio便攜式libary的,...

0

要小心,它是怎麼做的,由於系統對潛在的依賴庫,例如Linux下的套接字,與Windows套接字不同(確實有一個類似命名的函數)。

它可以幫助您使用宏,因爲這

#ifdef __WIN32__ 
... functions targetting the Windows platform 
#else // __GNU_LINUX__ 
... functions targetting the Linux platform 
#endif 

這是幹嘛呢,這樣一來,就可以區分和處理平臺具體的例子機制......所以只是提防平臺之間的細微差異...

這就是除非,您正在使用跨平臺兼容的庫,如QT/wxWidgets或類似的,但不要認爲代碼將按原樣工作,不管平臺如何。

0

如果它是使用簡單C++的簡單「控制檯」應用程序,那麼您應該能夠直接在Windows上使用代碼。

您可以在窗口上使用gxx/g ++並使用相同的make文件重建;或者使用Visual Studio Express並在項目中導入源代碼並將其編譯(可能會有問題,因此只修復編譯錯誤/警告)。

如果Linux代碼使用API​​和SDK(UI?)在Windows上不可用,則必須使用本機Win32或MFC或應用程序使用的其他類型庫移植代碼以在Windows上工作。

M.

1

最好的辦法是寫於所有平臺/操作系統相關API調用的平臺抽象層,該層將暴露所有與平臺相關的API類型的通用接口。

它基本上應作爲您的應用程序和OS /平臺之間的抽象。

對於每個端口(Linux或Windows),都要實現此接口。您可以將抽象作爲每個端口的單獨庫提供,以確保您的調用應用程序保持不變,只有要鏈接的庫發生更改。