2011-11-12 69 views
1

我正在開發一個旨在適用於所有平臺(linux,mac和windows)的庫。這個庫基於Qt,它是一個跨平臺的用戶界面庫。我正在使用Mac開發這個庫。我開發的當前版本是一個靜態庫(.a),適用於Linux和Mac。這個.a library也可以在Windows中工作(比方說使用Visual Studio),還是必須爲此創建單獨的庫類型?如果是的話,我怎樣才能從我的Mac創建Windows靜態庫?爲了您的信息,我正在使用QtCreator IDE來創建靜態庫。一個簡單的指南/代碼示例/有用的鏈接將非常有用。使用qmake開發跨平臺C++靜態庫(通過Mac上的Qt創建器IDE)

+0

如果您使用的是(現代)mac,則可以啓動到多個分區或在虛擬機上啓動另一個操作系統。後者在您開發另一個「系統」時便於構建和單元測試。 – justin

+0

我認爲Qt更喜歡動態鏈接庫,特別是因爲插件(這對插件很有用,...)。 –

回答

3

首先,如果您想編寫跨平臺軟件,您需要在您定位的平臺上進行測試。如果你沒有Windows電腦來測試,那麼你可以親吻Windows兼容性告別。

其次,Windows確實有靜態庫,但它們使用.lib擴展而不是.a。嚴重的構建系統,如qmake應該能夠處理這個問題。如果你告訴它產生一個靜態庫,它將在Windows上生成一個.lib,在其他平臺上生成.aib。

當然,爲了使它與任何東西一起工作,它必須使用與鏈接到的程序相同的編譯器進行編譯。

如果使用GCC(或MinGW,GCC的Windows端口)生成.lib文件,那麼它不能鏈接到Visual Studio項目中,因爲它們使用不同的ABI,不同的標準庫實現和不同的運行時(並且因爲MSVC .lib文件的格式未被記錄並且在編譯器版本之間發生變化)。

但是,由於qmake適用於大多數編譯器,因此在使用Visual Studio生成.lib文件時應該沒有問題。