2011-11-12 12 views
1

私はすべてのプラットフォーム(linux、mac、windows)で動作するライブラリを開発中です。このライブラリは、クロスプラットフォームのユーザインタフェースライブラリであるQtに基づいています。私はこのライブラリをMacで開発しています。現在開発しているスタティックライブラリ(.a)は、LinuxとMacで動作します。この.a libraryはWindowsでも動作しますか(Visual Studioを使用してみましょう)、または別のライブラリタイプを作成する必要がありますか?もしそうなら、どうすれば私のMacからWindowsの静的ライブラリを作成できますか?あなたの情報については、QtCreator IDEを使って静的ライブラリを作成しています。簡単なガイドライン/コード例/有用なリンクが本当に役に立ちます。qmake(Qt creator IDE for Mac経由)を使ったクロスプラットフォームC++静的ライブラリの開発

+0

(現代の)Macを使用している場合は、複数のパーティションにブートするか、仮想マシン上で別のOSを起動することができます。後者は、別の「システム」で開発している間に、ビルドと単体テストに便利です。 – justin

+0

Qtは、特にプラグイン(スタイルに便利です...)のために、動的にリンクされたライブラリを好んでいると思います。 –

答えて

3

まず、クロスプラットフォームソフトウェアを作成する場合は、ターゲットプラットフォームでテストする必要があります。あなたがテストするWindowsコンピュータを持っていない場合、あなたはWindows互換性の別れをキスすることができます。

第2に、Windowsにはスタティックライブラリがありますが、.aの代わりに.libという拡張子が使用されます。 qmakeのような深刻なビルドシステムはこれを処理できるはずです。静的ライブラリを生成するように指示すると、Windowsでは.lib、他のプラットフォームでは.aを生成します。

もちろん、何かで動作するには、リンク先のプログラムと同じコンパイラでコンパイルする必要があります。

GCC(またはMinGW、GCCのWindowsポート)で.libファイルを生成すると、異なるABI、異なる標準ライブラリ実装、および異なるランタイムを使用するため、Visual Studioプロジェクトにリンクすることはできません(また、MSVC .libファイルの形式が文書化されておらず、コンパイラのバージョン間で変更されているため)。

しかし、qmakeはほとんどのコンパイラで動作するため、Visual Studioで.libファイルを生成する際に問題はありません。

関連する問題