大昔にWindowsストアアプリとWindows Phone 8向けにOpenCVを移植してみたのですが、Surface RT(ARM)向けとパソコン(x86)向けではCPUアーキテクチャが異なるため、同じネイティブライブラリを使うことができません。
……ということで、本記事ではプラットフォームごとによって、異なる参照するdllアセンブリを切りかえてみましょう。
ARM用・x86用は、それぞれlibフォルダの直下のarmフォルダ・x86フォルダに格納しています。
- ARM向けのアセンブリ
- \lib\arm\OpenCV.winmd
- x86向けのアセンブリ
- \lib\x86\OpenCV.winmd
Visual Studio 2012のGUIで設定を変更することはできず、csprojファイルをエディタ等で直接編集する必要があります。
<Reference Include="OpenCV"> <HintPath Condition="'$(Configuration)|$(Platform)'=='Debug|ARM'">.\lib\arm\OpenCV.winmd</HintPath> <HintPath Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">.\lib\arm\OpenCV.winmd</HintPath> <HintPath Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">.\lib\x86\OpenCV.winmd</HintPath> <HintPath Condition="'$(Configuration)|$(Platform)'=='Release|x86'">.\lib\x86\OpenCV.winmd</HintPath> </Reference>