最近在hololens2上开发应用,发现在unity里要想引入dll,还必须生成uwp 平台或者说 windows arm64类型的dll,与一般pc上调用x64的不同,于是学习了好几周,先拿opencv试一下
opencv编译windows arm64平台
首先用cmake-gui 选择
点击finish,我这里可以正常生成vs工程
opencv编打开vs,生成>批生成>all build 生成arm64 release版本的
会发现有很多这种错误
这个链接有解决方法
解决方法就是返回cmake-gui,把 CV_DISABLE_OPTIMIZATION=ON CPU_BASELINE=“” -D CPU_DISPATCH=“”,
接着继续all build
会发现有些成功,7个失败,查看错误信息,发现
多数是ippicv模块有问题,观看3rdparty/ippicv,发现ippicv库是直接引入的lib库 ,而这个库是win 64的,感觉应该不合适,返回cmake
那么这里猜测一下,取消勾选with_ipp,再build
发现仍然有错误,
这里就直说了,
取消勾选build python 三个以及with openjpeg
不知道为啥,可能是arm64平台不支持以上工程?
因为openjpeg工程就两个错误,我仔细看了一下,是windows一个特有函数函数__popcnt找不到解析,可是头文件很容易就包含了。。。。于是就索性把openjpeg工程取消;
python的错误就太多了,就直接取消算了,懒得查原因
皇天不负有心人,终于没错了,查看生成的bin
用git bash的file命令查看信息
确认都是基于arm64的,到此bin总共生成64个文件,包括16个dll,数量上和基于默认x64编译的opencv相同。但是与opencvforunity中的arm64 dll还少了10个
下图是opencvforunity支持的arm64 dll,总共有26个,缺少的应该是opencv_contrib部分