Hololens入门之Sharing(HoloToolkit中Sharing库的编译)
hololens在进行共享相关的开发时,可以直接使用HoloToolkit-Unity中的Sharing相关的脚本及库文件。对应在 HoloToolkit-Unity-master\External\HoloToolkit\Sharing目录中。
这部分API文件及库文件是已经编译生成好了的。这部分库文件也可以自己进行编译生成。源码可以从 https://github.com/Microsoft/HoloToolkit 上进行下载。
编译所需环境及编译步骤可参考:https://github.com/Microsoft/HoloToolkit/blob/master/Sharing/Src/Source/Docs/ExtendedDocs/GettingStarted.md
但是上述文档中描述的编译实在是太过简陋,按照其中描述,直接运行一下BuildAll.bat 就可以编译完成,其实不然,今天折腾了半天,踩了N多个坑才最终编译成功。以下描述下编译过程中可能遇到的问题,及我的解决方法。(按照我编译的顺序依次贴出遇见的问题)
1、运行BuildAll.bat,首先遇到的是git中的版本所需的windows SDK版本和本地环境的SDK版本不一致,导致编译出错。
解决方法:根据自己环境中Windows SDK的版本号,修改所有Sharing目录中的.vcxproj文件中的目标版本号,我的版本为14393,所有进行以下替换
2、重新运行BuildAll.bat,会遇到C++文件中依赖的头文件无法找到
解决方法:打开对应的工程,如上图中为apriltag项目中报的错。可以打开apriltag.sln, 右击项目->属性 将目标平台版本从8.1修改为10.0.14393.0(如下图)。后面编译中如遇到类似问题可以同样处理
3、重新运行BuildAll.bat,遇到同2中相同的问题
解决方法:打开对应工程,同2中一样的处理
解决方法:找到对应的文件SocketIncludes.h 37行,将其注释(该处没有仔细看会不会有影响)
5、重新运行BuildAll.bat,文件格式有问题
解决方法:打开对应的工程 CommonUniversal.vcxproj,找到并双击打开TransformManager.h,然后保存该文件
6、重新运行BuildAll.bat,遇到SessionManagerUniversal.UI.csproj中SDK版本与本机环境版本不一致
解决方法:文本编辑打开对应文件,将版本号修改为14393(根据自己环境进行修改)
7、重新运行BuildAll.bat,在编译java环境下运行的库文件时,遇到jni.h无法查找到
查看对应的工程(ClientWindowsJava.vcxproj)的属性,可以看到附加包含目录中使用到了JAVA的环境变量 JAVA_INCLUDE
解决方法:添加系统环境变量,根据自己的安装路径进行修改田间。本文不讲述如何安装JDK,这个可以自行网上搜索进行安装
8、重新运行BuildAll.bat,在进行PreBuild时出错
查看对应的JavaTestApp.vcproj文件,可以看到其中使用到了 JAVA_BIN环境变量
解决方法:添加JAVA_BIN环境变量(根据自己的路径进行修改添加)。本文不讲述如何安装JDK,这个可以自行网上搜索进行安装
9、重新运行BuildAll.bat,再进行编译,编译成功。如读者还遇到其它问题,可以google之。
最终编译结果 保存在 HoloToolkit-master\Sharing\SDK中。