因为要用NYU V2 ToolBox中的 深度补全 功能,所以接触到了如题的点。如下图所示,ToolBox代码有放在Matlab中运行的 .m 文件,也有经典的 .cpp 文件。简单科普一下,因为 C/C++ 运行效率远超 .m ,所以可以把程序的核心代码放在 .cpp中,以节省时间。
实践
首先,一开始运行 demo_fill_depth_cross_bf_test.m 文件,报错如下图。简单解释一下:函数 mex_cbf_windows 和函数 cbf_windows对应着函数 mex_cbf_windows.cpp 和函数 cbf_windows.cpp。当然,不是所有的 .cpp 都可以被 Matalb 直接调用,感兴趣参阅此处和此处。接下来便引出了本文的主题:Matlab2019a与Visual Studio2017联合编译
首先本人的 Matlab 版本是 2019a,可以和 Visual Studio 2015,2017 联合编译,而不支持和 Visual Studio 2019。由于我之前只有 Visual Studio 2019,所以大早上还重装了Visual Studio 2017。那么你也许会问,我的 Matlab 不是2019a,那么和哪些匹配呢?不要急,只需要在 Matlab 中运行:
mex -setup -v
那么 Matalb 就会返回信息,如果电脑上已经装了匹配的编译器,它会告诉你。如果没装,也不必惊慌,因为它也会告诉你你的 Matlab 匹配的 Visual Studio 或者其他的适合的版本。去下载安装即可。
接下来,在 Matlab 执行
mex -setup C++
这样就设置好了与 Visual Studio 2017 联合编译 C++。
紧接着,在 Matlab执行
mex mex_cbf_windows.cpp cbf_windows.cpp
这时就会生成以 .mexw64 后缀的文件 mex_cbf_windows.mexw64。当然注意,此时 Matlab 的当前文件目录一定要是 mex_cbf_windows.cpp cbf_windows.cpp 所在的目录。
最后,运行调用了 函数 mex_cbf_windows 和函数 cbf_windows的demo文件 demo_fill_depth_cross_bf_test.m 即可。
参考
https://blog.csdn.net/weixin_41423872/article/details/114578403
https://blog.csdn.net/q505025354/article/details/106289988
https://zhuanlan.zhihu.com/p/60380931