matlab 和 C++混合混合编译及调试

1.背景

在SS算法的matlab代码中,超像素生成用的是《Efficient_Graph-Based_Image_Segmentation》的方法,作者提供的是C++代码,SS作者对源码进行修改,写了matlab和C++的接口函数mexFelzenSegmentIndex函数实现C++和matlab的混合编程。为了更好地理解源码,需要对matlab和C++进行混合调试。

2步骤

2.1在matlab中编译文件

在matlab进行编译,此处一定要有-g选项

matlab 和 C++混合混合编译及调试

matlab 和 C++混合混合编译及调试

当前目录会生成2个文件,一个是matlab可以调用的 .mexw64文件,以及在VS中用于调试的Program Debug Database (.pdb)程序

matlab 和 C++混合混合编译及调试

!!!没有g选项是无法进行调试的

2.2在VS中打开调试界面

打开要调试的.cpp后缀的程序

matlab 和 C++混合混合编译及调试

点击 调试 ——>附加到进程

!!!我用的是VS2015,其他版本的VS  “附加到进程”可能在其他的位置。

matlab 和 C++混合混合编译及调试

可用进程选择“matlab.exe”点击“附加”

!!!此时要保证matlab是打开的,否则是找不到“matlab.exe”进程的

matlab 和 C++混合混合编译及调试

在.cpp文件中设立断点

!!!不设立断点进入不到.cpp文件中

matlab 和 C++混合混合编译及调试

2.3调试程序

在matlab中对应位置,matlab 和 C++混合混合编译及调试就可以进行VS中进行调试了

matlab 和 C++混合混合编译及调试

matlab 和 C++混合混合编译及调试

在VS中停止调试会进行到matlab的调试模式中

3参考资料

https://blog.****.net/shaoxiaohu1/article/details/37745215

https://blog.****.net/jpday/article/details/50364882