しっぽを追いかけて

ぐるぐるしながら考えています

Unity と猫の話題が中心   掲載内容は個人の私見であり、所属組織の見解ではありません

【未解決】MRTK vNext アルファ版の HoloLens 用ビルドを試してみる

※ これは 2018/08/18 Unity 2018.2.3f1、Mixed Reality Toolkit vNext Alpha v2018.7.0.0 時点の情報です

最新版では動作が異なる可能性がありますのでご注意ください

前回はアルファ版の次世代 Mixed Reality Toolkit で HoloLens 用のビルドをしたところ、ビルドエラーになってしまいました

これをなんとかしたい

というわけで下記エラーログを見ると MSB3073 のあとに il2cpp.exe 実行コマンドが書かれていました

D:\1_Tools\VisualStudio\2017\Common7\IDE\VC\VCTargets\Microsoft.MakeFile.Targets(44,5): error MSB3073: �R�}���h ""D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\\IL2CPP\build\il2cpp.exe" --libil2cpp-static --compile-cpp -architecture=x86 -configuration=Debug -platform=winrt -outputpath="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\\build\bin\Win32\Debug\GameAssembly.dll" --data-folder="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\\build\bin\Win32\Debug\\" -cachedirectory="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\\build\obj\il2cppOutputProject\Win32\Debug\\" -generatedcppdir="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\\Source" --additional-defines=WINDOWS_UWP --additional-defines=UNITY_UWP --additional-defines=UNITY_WSA_10_0 --additional-defines=UNITY_WSA --additional-defines=UNITY_WINRT --additional-defines=PLATFORM_WINRT -dotnetprofile=unityjit -verbose --map-file-parser="D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\\IL2CPP\MapFileParser\MapFileParser.exe"" �̓R�[�h -532462766 �ŏI�����܂����B [D:\2_Documents\2_Sources\MRSamples\vNextAlpha\UWP\Il2CppOutputProject\Il2CppOutputProject.vcxproj]
UnityEngine.Debug:Log(Object)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__AnonStorey3:<>m__2(Object, DataReceivedEventArgs) (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:87)
System.Threading._ThreadPoolWaitCallback:PerformWaitCallback()

MixedRealityToolkit appx build Failed! (ErrorCode: 1)
UnityEngine.Debug:LogError(Object)
Microsoft.MixedReality.Toolkit.Internal.Build.<BuildAppxAsync>c__async0:MoveNext() (at Assets/MixedRealityToolkit/_Core/BuildAndDeploy/UwpAppxBuildTools.cs:192)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(ProcessResult)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__async0:MoveNext() (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:37)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(ProcessResult)
Microsoft.MixedReality.Toolkit.Internal.Extensions.<StartProcessAsync>c__async1:MoveNext() (at Assets/MixedRealityToolkit/_Core/Extensions/ProcessExtensions.cs:109)
UnityEngine.UnitySynchronizationContext:ExecuteTasks()

これを直接コマンドラインで実行したところ、C++ のライブラリが見つからないとのエラーメッセージ

なるほど、次世代 MRTK は .NET ベースから IL2CPP の C++ べースに変わったのでその辺のライブラリを要求するようになったようですね

というわけで、スタートメニューから「Visual Studio Installer」を起動

案の定「C++ によるデスクトップ開発」がインストールされてなかったので、チェックを入れて「変更」ボタン押下でインストール

インストールが終わったら

Unity Editor に戻って Build Window の「Appx Build Options」タブ、「Build APPX」ボタン押下でビルド

今度は成功した!

そこで HoloLens に配置すべく、Build Window の「Deploy Options」タブ、「Install」ボタン押下

またも別のエラー・・・ぐぬぬ

Windows cannot install package Microsoft.MixedReality.Toolkit_2018.0.11.0_x86__ph1m9x8skttmg because this package depends on a framework that could not be found. Provide the framework "Microsoft.VCLibs.140.00.Debug" published by "CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US", with neutral or x86 processor architecture and minimum version 14.0.26726.0, along with this package to install. The frameworks with name "Microsoft.VCLibs.140.00.Debug" currently installed are: {Microsoft.VCLibs.140.00.Debug_14.0.25830.2_x86__8wekyb3d8bbwe}
Package failed updates, dependency or conflict validation.

UnityEngine.Debug:LogError(Object)
Microsoft.MixedReality.Toolkit.Internal.Utilities.WindowsDevicePortal.<GetInstallStatusAsync>c__asyncB:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/WindowsDevicePortal/DevicePortal.cs:468)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(Response)
Microsoft.MixedReality.Toolkit.Internal.Utilities.WebRequestRest.<GetAsync>c__async0:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/WebRequestRest/Rest.cs:66)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:SetResult(Response)
Microsoft.MixedReality.Toolkit.Internal.Utilities.WebRequestRest.<ProcessRequestAsync>c__async8:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/WebRequestRest/Rest.cs:246)
System.Runtime.CompilerServices.MoveNextRunner:Run()
Microsoft.MixedReality.Toolkit.Internal.Utilities.Async.AwaiterExtensions:RunOnUnityScheduler(Action) (at Assets/MixedRealityToolkit/_Core/Utilities/AsyncUtility/AwaiterExtensions.cs:151)
Microsoft.MixedReality.Toolkit.Internal.Utilities.Async.SimpleCoroutineAwaiter`1:Complete(AsyncOperation, Exception) (at Assets/MixedRealityToolkit/_Core/Utilities/AsyncUtility/AwaiterExtensions.cs:195)
Microsoft.MixedReality.Toolkit.Internal.Utilities.Async.<ReturnSelf>c__Iterator2`1:MoveNext() (at Assets/MixedRealityToolkit/_Core/Utilities/AsyncUtility/AwaiterExtensions.cs:387)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)