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

ユニバーサル Windows プラットフォーム (UWP) アプリで使用されるスタティック ライブラリは、STL 型、および Windows ランタイム アプリのプラットフォームから除外されていない Win32 Api への呼び出しを含む、ISO 標準の C++ コードを含めることができます。A static library that's used in a Universal Windows Platform (UWP) app can contain ISO-standard C++ code, including STL types, and also calls to Win32 APIs that are not excluded from the Windows Runtime app platform. スタティック ライブラリは、Windows ランタイム コンポーネントを処理し、特定の制限の Windows ランタイム コンポーネントを作成します。A static library consumes Windows Runtime components and may create Windows Runtime components with certain restrictions.

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

UWP アプリで使用するためのスタティック ライブラリを作成するにはTo create a static library for use in a UWP app

  1. メニュー バーで、[ファイル] > [新規作成] > [プロジェクト] を選択します。On the menu bar, choose File > New > Project. Visual C > Windows ユニバーサル選択スタティック ライブラリ (ユニバーサル Windows) です。Under Visual C++ > Windows Universal choose Static Library (Universal Windows).

  2. ソリューション エクスプローラーで、プロジェクトのショートカット メニューを開き、 [プロパティ] をクリックします。In Solution Explorer, open the shortcut menu for the project and then choose Properties. プロパティ ダイアログ ボックスで、構成プロパティ > C/C++ ページで、設定Windows ランタイム拡張機能はい (/ZW) です。In the Properties dialog box, on the Configuration Properties > C/C++ page, set Consume Windows Runtime Extension to Yes (/ZW).

    UWP アプリの除外されている Win32 API への呼び出しを行う場合に新規のスタティック ライブラリをコンパイルするときにコンパイラによってエラー C3861「識別子が見つかりませんでした」が発生When you compile a new static library, if you make a call to a Win32 API that's excluded for UWP apps, the compiler will raise error C3861, “Identifier not found.” Windows ランタイムのサポートされている別の方法を探すを参照してください。 UWP アプリでの Windows Api に代わる方法です。To look for an alternative method that's supported for the Windows Runtime, see Alternatives to Windows APIs in UWP apps.

    UWP アプリのソリューションに C++ スタティック ライブラリ プロジェクトを追加する場合は、UWP サポート プロパティに設定するように、ライブラリ プロジェクトのプロパティの設定を更新する必要がありますはいです。If you add a C++ static library project to a UWP app solution, you might have to update the library project’s property settings so that the UWP support property is set to Yes. この設定がなくてもコードはビルドし、リンクについては、エラーが発生した Microsoft ストアのアプリケーションを検証しようとしたときにします。Without this setting, the code builds and links, but an error occurs when you attempt to verify the app for the Microsoft Store. スタティック ライブラリは、そのライブラリを利用するプロジェクトと同じコンパイラ設定でコンパイルする必要があります。The static lib should be compiled with the same compiler settings as the project that consumes it.

    ref パブリック クラス、パブリック インターフェイス クラス、またはパブリック値クラスを作成するスタティック ライブラリを使用すると、リンクは次の警告を出します。If you consume a static library that creates public ref classes, public interface classes, or public value classes, the linker raises this warning:

警告 LNK4264: をスタティック ライブラリ; に/ZW でコンパイルされたオブジェクト ファイルをアーカイブには、Windows ランタイム型を作成するときに推奨されないことを Windows ランタイム メタデータを含むスタティック ライブラリとリンクに注意してください。warning LNK4264: archiving object file compiled with /ZW into a static library; note that when authoring Windows Runtime types it is not recommended to link with a static library that contains Windows Runtime metadata.

スタティック ライブラリは、ライブラリ自体の外部で使用される Windows ランタイム コンポーネントを生成しない場合のみに安全に、警告を無視できます。You can safely ignore the warning only if the static library is not producing Windows Runtime components that are consumed outside the library itself. ライブラリが、自らが定義したコンポーネントを利用していない場合、パブリック メタデータに型情報が含まれている状況でも、リンカーは実装を最適化できます。If the library doesn’t consume a component that it defines, then the linker can optimize away the implementation even though the public metadata contains the type information. このことは、スタティック ライブラリ内のパブリック コンポーネントはコンパイルされるが、実行時にアクティブにならないことを意味します。This means that public components in a static library will compile but will not activate at run time. このため、ダイナミック リンク ライブラリ (DLL) で他のコンポーネントまたはアプリケーションで消費される Windows ランタイム コンポーネントを実装しなければなりません。For this reason, any Windows Runtime component that's intended for consumption by other components or apps must be implemented in a dynamic-link library (DLL).

関連項目See Also

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