簡體   English   中英

Microsoft Visual C ++是否與Windows平台綁定?

[英]Is Microsoft Visual C++ tied to windows platform?

我想學習C ++,並且想知道是否使用Microsoft VC ++可以使我與Windows綁定。 我特別需要我的項目也可以在Mac上運行。 我的項目都是類庫,並且不依賴於UI。 它們只是計算或文件/網絡IO。

我真的很喜歡整體上在Visual Studio和Microsoft中工作。 因此,我的首要任務是使用VC ++,除非為Windows和Mac構建跨平台應用程序很麻煩。 我的意思是在編譯器,庫和語言級別。 我不希望我的並行應用程序在某些平台上崩潰。

我個人使用Visual Studio在Windows上構建我的代碼,並使用其他編譯器在其他平台(Mac,Linux,Android ...)上構建相同的代碼。

為確保您不會被Windows鎖定,請確保(至少,它並不詳盡):

  • 您不使用任何win32 API(更喜歡跨平台的庫,例如boost用於網絡,文件系統訪問...)
  • 您不使用僅適用於Windows的第三方庫
  • 不要使用CString或任何其他Microsoft類。 首選STL。
  • 也要注意文件系統的大小寫敏感性! (當磁盤上的文件為“ foo.h”時, #include "Foo.h"將在PC上運行,而不是在Mac / Linux下運行)。 最好用小寫字母命名所有文件。
  • ...

您可能想看看CMake 該工具可以幫助您為要在不同平台上編譯的同一源生成編譯項目文件。 然后,您可以生成vcproj / SLN文件與編譯代碼的Visual Studio在Windows上, 生成文件(一個或多個)進行編譯的Linux下的XCode項目文件編譯它在MacOS下。 如果有人想用Microsoft以外的其他編譯器在Windows下編譯您的代碼,那也是可能的!

另請注意,VS(2015)的最新版本建議針對Windows(至少是Android)的其他目標進行編譯。 但是從來沒有嘗試過。

編譯器本身是知道非常標准confroming(如果您關閉擴展),更重要的是,你可以直接在VS2015使用鐺前端(這是在Mac上默認的編譯器),所以它是definitvely 可以編寫跨VS中的平台代碼(盡管使用Windows特定的結構肯定比使用cygwin的情況要容易得多)。

但是,用於網絡I / O的Windows API與用於Mac的Windows API不同,因此您可能應該使用諸如boost asio之類的corssplatform庫。

就多線程而言,您可以使用標准庫的函數,類和同步原語,以標准且可移植的方式來實現,但是過去表明,它們通常不是最有效的方法。 但是,在大多數情況下,無論如何,您都將希望使用更高級的庫進行並行編程。 Windows上的默認值是PPL,我相信-它不是跨平台的,但是您可以使用其他

最后,您可以使用VS使用本地編譯器和庫在Mac或Linux PC上遠程構建應用程序。 但是,我不知道在實踐中效果如何。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM