# Uisng Pulse for HoloLens 2 with ARM platform build

**URL:** https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421
**Category:** Pulse Physiology Engine
**Created:** [March 18, 2020, 1:55pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421 "2020-03-18T13:55:24Z")
**Posts on this page:** 20
**Page:** 3

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [March 30, 2020, 4:27pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/41 "2020-03-30T16:27:50Z")

</div>

> [@abray](#):
>
> configuring MSVC for compiling C++

> **[Making your Library Work on Windows on Arm Devices](https://www.codeproject.com/Articles/1401342/Making-your-Library-Work-on-Windows-on-Arm-Devices)**
>
> The article walks through the steps necessary to create native Windows on Arm builds of several popular libraries.

look if its helpful for this.  
Any specific thing which i can look into.

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 1, 2020, 2:52pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/42 "2020-04-01T14:52:03Z")

</div>

hi @abray did you found any configuration setting?

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 1, 2020, 3:12pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/43 "2020-04-01T15:12:19Z")

</div>

Hi Anand,

I have just pulled that article and will take a look.  
I am having internet difficulties this week and its making things difficult

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 2, 2020, 6:02pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/44 "2020-04-02T18:02:12Z")

</div>

I think the best course of action is to find a ARM emulator I can run on regular ol Windows 10  
And see if I can build an executable that runs pulse on it.

I am not sure where to get the windows emulator though…  
I tried to google for it, but have a limited amount of time for this.  
Do you think you can figure out how/where to get an emulator?

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 3, 2020, 7:29am UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/45 "2020-04-03T07:29:48Z")

</div>

i got this two links and it might be helpful , as any specific emulator is not available , also hololens 2 emulator doesn’t use ARM while building for emulator .

> <https://stackoverflow.com/questions/53684301/how-to-add-windows-phone-emulator-to-the-uwp-project>

  
: here you can fin the windows ARM mobile emulator and related info

[https://docs.microsoft.com/en-us/visualstudio/test/vstest-console-options?view=vs-2019](https://docs.microsoft.com/en-us/visualstudio/test/vstest-console-options?view=vs-2019)  
: have you tried this VS console dll test option.

Also have you checked that project configuration link , does that made any changes in config setup.

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 6, 2020, 11:35am UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/46 "2020-04-06T11:35:55Z")

</div>

> [@abray](#):
>
> ![image](https://discourse.kitware.com/uploads/default/original/1X/3b83ebe4d3ff414f501195b9978cd162741b9908.png)

is there option to set preferred build tool architecture to ARM?  
let me know if i can help you to test anything on device.

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 6, 2020, 12:00pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/47 "2020-04-06T12:00:03Z")

</div>

I am pretty sure that just uses the 32bit cl.exe or the 64bit cl.exe when building  
It does not affect the final build product, so that setting is not for us.

I have still not figured out what to download/install to get an emulator running on my machine  
I have not looked in depth though…

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 12:25pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/48 "2020-04-07T12:25:43Z")

</div>

Hello @abray , today i downloaded the project and tried to build it and i got this error:

> 5\>CMake Error at schema/CMakeLists.txt:81 (add\_library):  
> 5\> Cannot find source file:  
> 5\>  
> 5\> C:/Anand work2/enginePulse/schema/bind/cpp/cdm/Actions.pb.cc  
> 5\>  
> 5\> Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm  
> 5\> .hpp .hxx .in .txx  
> 5\>  
> 5\>  
> 5\>CMake Error at schema/CMakeLists.txt:81 (add\_library):  
> 5\> No SOURCES given to target: DataModelBindings  
> 5\>  
> 5\>  
> 5\>CMake Generate step failed. Build files cannot be regenerated correctly.

 ![image](https://discourse.kitware.com/uploads/default/original/1X/d710fb8be2846e7be194dbfde60263dd257e84ae.png)

what i’m doing wrong?

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 7, 2020, 12:30pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/49 "2020-04-07T12:30:45Z")

</div>

First off  
I suggest you check out the 3.x branch, not master  
We have a significant change to CMake and the directory structure from master (should have a new release this month to update master)

I also think that the space in your ‘Anand work2’ folder may cause an issue. I am not sure. Is the file there?

Just to be safe, check out 3.x and remove the space in your home folder.

You building and tweeking settings is probably going to be the quickest way to get a working PulseC.dll for you

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 12:53pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/50 "2020-04-07T12:53:02Z")

</div>

thanks, does that cmake configure setting is okay?

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 7, 2020, 12:56pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/51 "2020-04-07T12:56:23Z")

</div>

When you start again, make sure your build directory is empty  
Then, just configure, generate, open and build  
You don’t have to click on any cmake settings

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 1:11pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/52 "2020-04-07T13:11:07Z")

</div>

![image](https://discourse.kitware.com/uploads/default/original/1X/3d927b49a7d6677cc32da23343dc496037be41ce.png)  
do i missing anything now…

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 7, 2020, 1:19pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/53 "2020-04-07T13:19:41Z")

</div>

Well nuts  
I see what is happening  
Technically, you are cross compiling for ARM

In the Pulse build process, we build the protobuf compiler (protoc.exe) to generate code files based on our proto schema. But when you build for ARM, the protoc.exe built cannot run on regular windows, do the build does not generate the C++ files from the proto files.

Create a new build directory and target the regular MSVC 2019 x64 toolset, and build  
That will successfully generate all the code files from the proto files

Then go back and build this ARM specific solution, and it will find the generated files

Sorry about that.  
Cross compiling always adds a few wrenches into the system…

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 1:53pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/54 "2020-04-07T13:53:47Z")

</div>

Hi, So id did the same and still i’m getting same error , i’m pasting the log here, it shows error related zlib but I’ve installed that already .

> 5\>-- 3.10.1.0  
> 5\>-- Looking for pthread.h  
> 5\>-- Looking for pthread.h - not found  
> 5\>-- Found Threads: TRUE  
> 5\>-- Could NOT find ZLIB (missing: ZLIB\_LIBRARY ZLIB\_INCLUDE\_DIR)  
> 5\>-- Generating Schema Bindings  
> 5\>-- Using : C:/PulseEngine/Build64/protobuf/install/bin/protoc  
> 5\>-- From C:/PulseEngine/Engine/engine/schema/proto  
> 5\>-- To C:/PulseEngine/Engine/engine/schema/bind  
> 5\>-- Not generating bindings, nothing has changed since last build  
> 5\>-- Looking for zip shas  
> 5\>-- Found Java: C:/Program Files/Amazon Corretto/jdk1.8.0\_242/bin/java.exe (found version “1.8.0\_242”)  
> 5\>-- Found JNI: C:/Program Files/Amazon Corretto/jdk1.8.0\_242/lib/jawt.lib  
> 5\>-- Configuring done  
> 5\>CMake Error at schema/CMakeLists.txt:81 (add\_library):  
> 5\> Cannot find source file:  
> 5\>  
> 5\> C:/PulseEngine/Engine/engine/schema/bind/cpp/cdm/Actions.pb.cc  
> 5\>  
> 5\> Tried extensions .c .C .c++ .cc .cpp .cxx .cu .m .M .mm .h .hh .h++ .hm  
> 5\> .hpp .hxx .in .txx  
> 5\>  
> 5\>  
> 5\>CMake Error at schema/CMakeLists.txt:81 (add\_library):  
> 5\> No SOURCES given to target: DataModelBindings  
> 5\>  
> 5\>  
> 5\>CMake Generate step failed. Build files cannot be regenerated correctly.  
> 5\>C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\MSBuild\Microsoft\VC\v160\Microsoft.CppCommon.targets(230,5): error MSB6006: “cmd.exe” exited with code 1.  
> 5\>Done building project “Pulse.vcxproj” – FAILED.  
> 6\>------ Build started: Project: PulseData, Configuration: Release x64 ------  
> 6\>Building Custom Rule C:/PulseEngine/Engine/engine/CMakeLists.txt  
> 6\>-- Found Java: C:/Program Files/Amazon Corretto/jdk1.8.0\_242/bin/java.exe (found version “1.8.0\_242”)  
> 6\>-- Using JAVA\_HOME as my Java executable (set to : C:/Program Files/Amazon Corretto/jdk1.8.0\_242)  
> 6\>EXEC : error : Could not find or load main class com.kitware.physiology.pulse.dataset.DataSetReader  
> 6\>-- Found Java: C:/Program Files/Amazon Corretto/jdk1.8.0\_242/bin/java.exe (found version “1.8.0\_242”)  
> 6\>-- Using JAVA\_HOME as my Java executable (set to : C:/Program Files/Amazon Corretto/jdk1.8.0\_242)  
> 6\>EXEC : error : Could not find or load main class com.kitware.physiology.testing.SETestDriver

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 7, 2020, 2:00pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/55 "2020-04-07T14:00:28Z")

</div>

> [@anand.mulay](#):
>
> To C:/PulseEngine/Engine/engine/schema/bind  
> 5\>-- Not generating bindings, nothing has changed since last build

It looks like you are not on the 3.x

But you also should delete the schema\_last\_built file in your source directory  
It should be in C:/PulseEngine/Engine/engine/schema/bind

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 2:55pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/56 "2020-04-07T14:55:26Z")

</div>

Yes ,i cloned the 3.x version, and deleteting schema work for x64  
then i created build folder for ARM64, and it didn’t gave the last error but the new at the end of the pulse build.

> 5\>Done building project “Pulse.vcxproj” – FAILED.  
> 6\>------ Build started: Project: PulseData, Configuration: Release ARM ------  
> 6\>Building Custom Rule C:/PulseEngine/Engine/engine/CMakeLists.txt  
> 6\>-- Found Java: C:/Program Files/Amazon Corretto/jdk1.8.0\_242/bin/java.exe (found version “1.8.0\_242”)  
> 6\>-- Using JAVA\_HOME as my Java executable (set to : C:/Program Files/Amazon Corretto/jdk1.8.0\_242)  
> 6\>INFO FileUtils::57::Loading native library : C:\PulseEngine\ARMBUILD\install\bin/PulseJNI  
> 6\>EXEC : error FileUtils: :83::Unable to load C:\PulseEngine\ARMBUILD\install\bin/PulseJNI  
> 6\>java.lang.UnsatisfiedLinkError: no PulseJNI in java.library.path  
> 6\> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1871)  
> 6\> at java.lang.Runtime.loadLibrary0(Runtime.java:871)  
> 6\> at java.lang.System.loadLibrary(System.java:1124)  
> 6\> at com.kitware.physiology.utilities.FileUtils.loadLibrary(FileUtils.java:78)  
> 6\> at com.kitware.physiology.utilities.FileUtils.loadLibraries(FileUtils.java:48)  
> 6\> at com.kitware.physiology.utilities.jniBridge.initialize(jniBridge.java:10)  
> 6\> at com.kitware.physiology.pulse.dataset.DataSetReader.main(DataSetReader.java:48)  
> 6\>Exception in thread “main” java.lang.RuntimeException: Could not load PulseJNI library  
> 6\> at com.kitware.physiology.utilities.jniBridge.initialize(jniBridge.java:11)  
> 6\> at com.kitware.physiology.pulse.dataset.DataSetReader.main(DataSetReader.java:48)  
> 6\>-- Found Java: C:/Program Files/Amazon Corretto/jdk1.8.0\_242/bin/java.exe (found version “1.8.0\_242”)  
> 6\>-- Using JAVA\_HOME as my Java executable (set to : C:/Program Files/Amazon Corretto/jdk1.8.0\_242)  
> 6\>INFO FileUtils::57::Loading native library : C:\PulseEngine\ARMBUILD\install\bin/PulseJNI  
> 6\>EXEC : error FileUtils: :83::Unable to load C:\PulseEngine\ARMBUILD\install\bin/PulseJNI  
> 6\>java.lang.UnsatisfiedLinkError: no PulseJNI in java.library.path  
> 6\> at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1871)  
> 6\> at java.lang.Runtime.loadLibrary0(Runtime.java:871)  
> 6\> at java.lang.System.loadLibrary(System.java:1124)  
> 6\> at com.kitware.physiology.utilities.FileUtils.loadLibrary(FileUtils.java:78)  
> 6\> at com.kitware.physiology.utilities.FileUtils.loadLibraries(FileUtils.java:48)  
> 6\> at com.kitware.physiology.utilities.jniBridge.initialize(jniBridge.java:10)  
> 6\> at com.kitware.physiology.testing.SETestDriver.main(SETestDriver.java:30)  
> 6\>Exception in thread “main” java.lang.RuntimeException: Could not load PulseJNI library  
> 6\> at com.kitware.physiology.utilities.jniBridge.initialize(jniBridge.java:11)  
> 6\> at com.kitware.physiology.testing.SETestDriver.main(SETestDriver.java:30)

i should use different build folder for different platform right, as i cant change the toolset setting for same build folder again, right ?

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 7, 2020, 3:02pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/57 "2020-04-07T15:02:00Z")

</div>

That is a good build  
The build is trying to generate data for you, but it cannot as it is trying to load native dlls built for ARM and not regular Windows

You can use the same source folder for multiple builds  
But yes, for each platform you should use a new build folder  
i usually use

pulse-engine : This is my regular windows build, I build this first  
pulse-engine-arm : This is for an ARM target  
pulse-engine-arm64 : This is for an ARM64 target

Again, when you build arm targets, the PulseData project will fail to build as it is trying to generate data with the binaries you just built, and they cannot run on Windows

Good job! You are built and you can use that PulseC.dll on your HoloLens2!

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 3:10pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/58 "2020-04-07T15:10:20Z")

</div>

Thanks 🙂  
i can see PulseC.dll is there in x64 build , but as arm build failed , i cant find that in ARM build folder.

okay so i again tried to build just Pulse project and not Pulse data ,  
and i’m getting this now .

> Error C1083 Cannot open include file: ‘unistd.h’: No such file or directory (compiling source file C:\PulseEngine\ARMBUILD\protobuf\src\protobuf\src\google\protobuf\io\gzip\_stream.cc) [C:\PulseEngine\ARMBUILD\protobuf\src\protobuf-build\libprotobuf.vcxproj] Pulse C:\Program Files (x86)\GnuWin32\include\zconf.h 289

---

<div class="post-metadata">

### Author: ![abray](https://discourse.kitware.com/user_avatar/discourse.kitware.com/abray/32/12_2.png) [@abray](https://discourse.kitware.com/u/abray)
#### Post date: [April 7, 2020, 3:12pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/59 "2020-04-07T15:12:17Z")

</div>

Try rebuilding the arm build

Let me know where it fails

---

<div class="post-metadata">

### Author: ![anand.mulay](https://discourse.kitware.com/letter_avatar_proxy/v4/letter/a/d07c76/32.png) [@anand.mulay](https://discourse.kitware.com/u/anand.mulay)
#### Post date: [April 7, 2020, 3:19pm UTC](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421/60 "2020-04-07T15:19:00Z")

</div>

yeah, please have a look:

 ![image](https://discourse.kitware.com/uploads/default/original/1X/30f89b390260b409af54a0c9b3adce40c68e3f50.png)

[Previous page](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421.md?page=2)

[Next page](https://discourse.kitware.com/t/uisng-pulse-for-hololens-2-with-arm-platform-build/421.md?page=4)
