程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++跨平台應用編譯方法詳解

C++跨平台應用編譯方法詳解

編輯:C++入門知識

C++計算機編程語言應用領域非常廣泛,可以輕松的幫助我們完成各種功能需求。比如今天為大家介紹的C++跨平台應用的實現,就可以以一種簡單的方法來進行具體的操作。希望能給大家帶來一些幫助。

要建立一個C++跨平台應用,亦難也易。

難在什麼?所謂應用,自是實際應用,牽涉面很廣。

眾所周知,不同的操作系統即時是相同的函數也可能有著差異。如參數,返回值定義不同(socket),甚至語義不一樣(sleep)等等。如果全部需要自己來維護這個差異,必須手寫無數如下形式的代碼:

  1. #if defined WINNT  
  2. #elif defined LINUX  
  3. ... 

這絕對是一個浩大的工程。至於工程有多大,可以看一看 ACE 的開發成本。這是難!

  • Visual C++應用程序編譯技巧說明
  • C++函數指針相關內容介紹
  • C++ TinyXML使用心得總結
  • 兩種C++數據指針類型詳細介紹
  • C++文件操作具體應用函數介紹

為了能實現C++跨平台應用,我要做的是尋找經過大家實踐的證明能用的跨平台庫來幫助編碼,建立在巨人的肩膀上,這個工作就變得容易了。下面逐一列出我的一些選擇:

0. 語言及基礎庫:

標准 C++ 與 boost

標准 c++ 是98年制定的,現在主流的 c++ 編譯器都能夠比較好的支持了。這裡建議使用VC7.1和GCC4.0及以上版本。 boost 則是 C++ 標准委員會的一群人弄起來的一個 C++ 庫集合,其中不少庫以經進入 C++ TR1,可以說是准標准。使用這裡的庫我們有著充分的理由。象字符串的操作可以用 boost 的 String algorithms 庫,格式化操作可以用 boost::format,正則式可用 boost::regex 等等。boost 內容相當的豐富,具體內容還請直接查閱 http://www.boost.org/libs/libraries.htm 這裡有一個 boost 庫的列表。

1. 操作系統相關的:

ACE(ADAPTIVE Communication Environment) 和 boost

ACE 將操作系統的相關的互斥量、信號、進程,線程等都很好的封裝起來,可以直接使用。不過如果沒有用到 ACE,當然不是每個程序都跟網絡有關,沒用到網絡時,可能也不會用ACE。這時可以考慮使用boost 中相應的類 thread::thread, Boost.::Process 等。

2. 網絡

ACE

ACE 用來做網絡應用是很不錯的,除了對異構平台的簡單的包裝外還有應付各種環境的設計模式。甚至可以說是C++跨平台網絡編程目前唯一之選。對於性能要求比較高的想使用IOCP(winnt)或EPOLL(linux2.6)的,ACE 也提供了包裝,可以方便使用。

3. 數據庫

OTL (Oracle, Odbc and DB2-CLI Template Library)

要支持數據庫,不但要C++跨平台應用,還要跨數據庫,是不是比你想象的還要理想。OTL支持以下面的數據庫 : OTL Oracle ,SQL Server, Access, MySQL。還有其它的庫如DTL,但我看中了這個庫不但支持ODBC,它還支持數據庫的原生接口,可以有更佳的性能。

4. 界面

QT, wxWidgets

雖然使用了多年的 MFC,我還是對 MFC 無數的宏深惡痛絕, wxWidgets 雖不錯但 MFC 風格很明顯。還是用 QT 吧,面向對象的編程還是比較讓人愉快的。不過,QT 是雙認證的,當你的程序免費時它就免費,你的程序打算賣錢時,它也要,而且要價很高。所以,如果有版權,成本上的考慮的話,則可以考慮wxWidgets。

列出了不少東西,希望給大家一些幫助。不過最後要注意一點,每個庫支持的C++跨平台應用數量有多有少,並不一致,做應用時要估量一下可能用到的平台。不過,一般來說是足夠了,上面的庫至少支持 windows 和 unix/linux 兩種以上。到這裡,基本上可以把自己寫的程序在 windows、linux 搬來去了,呵呵 "一次編碼,到處編譯!" 。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved