一、前言
由于工程需要,本人用vs2013做了sdk,提供给Qt工程师调用,由于未曾有过qt的开发经验,过程遇到了很多问题,如c++的std::string不能跨环境的进程调用,dll中new出来的内存,在vs的工程正常 ,在Qt工程却总为不可访问的地址,一大堆问题,迫于无奈唯有自己用dll联调Qt程序。
具体遇到的问题,可以参考:https://blog.csdn.net/LittleLittleFish_xyg/article/details/83896675
二、调试步骤
1、新建vs的dll工程
创建dll的方法请参考:
https://blog.csdn.net/LittleLittleFish_xyg/article/details/83030430
可以看一下,qt是能正常运行dll的
2、新建Qt工程,配置dll。确保能正常调用dll,否则后续步骤无效
不懂配置的请参考:
https://blog.csdn.net/LittleLittleFish_xyg/article/details/83896107
3、vs工程联调Qt工程(可能有人疑惑,为何不是Qt调用dll的联调,是因为代码跟踪到dll,需要源码)
a、第一步先将qt工程的debug目录下所有文件,以及所需要的qt的dll拷贝到dll工程中的dll生成目录中,保证qt工程能跑
b、在Qt工程先做一下手脚,做个休眠,因为后面步骤需要手速,太慢,则程序已经跑完了。本人使用了20s时间。然后执行a步骤
c、双击运行qt工程,让他跑起来
d、在dll源码中,添加断点
e、快速点击“调试”—“附加到进程”,找到刚才的qt工程,确定
f、即可进入断点调试代码
三、学习心得
调试过程比较复杂,实际开发过程中遇到,接触新的知识,也是长知识了,调试时注意手速,休眠十秒,总是找不到qt工程,就销毁了,我也是尝试了很多次才演示成功,建议把时间调整长一点。