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选项
当前目录会生成2个文件,一个是matlab可以调用的 .mexw64文件,以及在VS中用于调试的Program Debug Database (.pdb)程序
!!!没有g选项是无法进行调试的
2.2在VS中打开调试界面
打开要调试的.cpp后缀的程序
点击 调试 ——>附加到进程
!!!我用的是VS2015,其他版本的VS “附加到进程”可能在其他的位置。
可用进程选择“matlab.exe”点击“附加”
!!!此时要保证matlab是打开的,否则是找不到“matlab.exe”进程的
在.cpp文件中设立断点
!!!不设立断点进入不到.cpp文件中
2.3调试程序
在matlab中对应位置,就可以进行VS中进行调试了
在VS中停止调试会进行到matlab的调试模式中
3参考资料
https://blog.****.net/shaoxiaohu1/article/details/37745215
https://blog.****.net/jpday/article/details/50364882