スタティック ライブラリ (C++/CX)

ユニバーサル Windows プラットフォーム (UWP) アプリケーションで使用されるスタティック ライブラリには、STL 型を含む ISO 標準 C++ コード、および Windows ランタイム アプリケーション プラットフォームから除外されていない Win32 API への呼び出しも含めることができます。 スタティック ライブラリはランタイム コンポーネントWindows使用し、特定の制限Windowsランタイム コンポーネントを作成する場合があります。

スタティック ライブラリの作成

新しいプロジェクトを作成する手順は、インストールされている Visual Studio のバージョンによって異なります。 優先するバージョンの Visual Studio のドキュメントを表示するには、 [バージョン] セレクター コントロールを使用します。 このページの目次の一番上にあります。

Visual Studio に UWP スタティック ライブラリを作成するには

  1. メニュー バーで、[ファイル]>[新規作成]>[プロジェクト] の順に選択して、[新しいプロジェクトの作成] ダイアログを開きます。

  2. ダイアログの上部で、[言語][C++] に、[プラットフォーム][Windows] に、[プロジェクト タイプ][UWP] に設定します。

  3. フィルター処理されたプロジェクト タイプの一覧から、[スタティック ライブラリ (ユニバーサル Windows - C++/CX)] を選択して、[次へ] を選択します。 次のページで、プロジェクトの名前を入力し、必要な場合はプロジェクトの場所を指定します。

  4. [作成] ボタンをクリックしてプロジェクトを作成します。

Microsoft Visual Studio 2017 または Microsoft Visual Studio 2015 で UWP スタティック ライブラリを作成するには

  1. メニュー バーで、 [ファイル]>[新規作成]>[プロジェクト] を選択します。 [Visual C++]>[Windows ユニバーサル] で、[スタティック ライブラリ (ユニバーサル Windows)] を選択します。

  2. ソリューション エクスプローラーで、プロジェクトのショートカット メニューを開き、 [プロパティ]をクリックします。 [プロパティ] ダイアログ ボックスの [構成プロパティ]>[C/C++] ページで、[Windows ランタイム拡張機能の使用][はい (/ZW)] に設定します。

新しいスタティック ライブラリをコンパイルするときに、UWP アプリケーションのために除外されている Win32 API を呼び出すと、コンパイラはエラー C3861「識別子が見つかりませんでした」を発行します。Windows ランタイムでサポートされている代替メソッドを検索するには、「UWP アプリでの Windows API の代替」を参照してください。

C++ スタティック ライブラリ プロジェクトを UWP アプリ ソリューションに追加する場合は、UWP サポート プロパティが [はい] に設定されるように、ライブラリ プロジェクトのプロパティ設定を更新する必要がある場合があります。 この設定がなくてもコードはビルドとリンクを実行しますが、Microsoft Store アプリの検証を試みるとエラーが発生します。 スタティック ライブラリは、そのライブラリを利用するプロジェクトと同じコンパイラ設定でコンパイルする必要があります。

ref パブリック クラス、パブリック インターフェイス クラス、またはパブリック値クラスを作成するスタティック ライブラリを使用すると、リンクは次の警告を出します。

警告LNK4264: は /ZW でコンパイルされたオブジェクト ファイルをスタティック ライブラリにアーカイブしています。Windows Runtime 型を作成する場合、Windows Runtime メタデータを含むスタティック ライブラリとのリンクはお勧めできません。

スタティック ライブラリが、ライブラリ自体の外部で使用される Windows ランタイム コンポーネントを生成しない場合のみ、安心して警告を無視できます。 ライブラリが定義したコンポーネントを使用しない場合、パブリック メタデータに型情報が含まれている場合でも、リンカーは実装を最適化できます。 このことは、スタティック ライブラリ内のパブリック コンポーネントはコンパイルされるが、実行時にアクティブにならないことを意味します。 この理由により、他のコンポーネントまたはアプリケーションで使用することを意図した任意の Windows ランタイム コンポーネントは、ダイナミック リンク ライブラリ (DLL) で実装する必要があります。

関連項目

スレッドとマーシャリング