c#为什么不能调试C++生成的DLL

这篇文章主要讲解了“c#为什么不能调试C++生成的DLL”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“c#为什么不能调试C++生成的DLL”吧!

创新互联公司专业成都网站建设、成都做网站,集网站策划、网站设计、网站制作于一体,网站seo、网站优化、网站营销、软文发稿等专业人才根据搜索规律编程设计,让网站在运行后,在搜索中有好的表现,专业设计制作为您带来效益的网站!让网站建设为您创造效益。

C++生成的DLL被C#代码引用,就这么简单的一个例子,用debug方式启动,但不能进入c++源码中。两个项目都在同一个解决方案里面。

网上相关的帖子:

1)https://blog.csdn.net/chunleixiahe/article/details/53428429

2) https://blog.csdn.net/tangyanzhi1111/article/details/8597766?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-4&spm=1001.2101.3001.4242

调试方法:【dll工程和调用dll的exe工程在同一个解决方案中】
dll工程,属性-配置属性-调试-把 命令 为 调用该dll的exe工程的bin\Debug\*.exe
dll工程,属性-配置属性-调试-把 调试器类型 设置为 仅限本机
dll工程,属性-配置属性-常规-把输出目录设置为 调用该dll的exe工程的bin\Debug目录下
在dll工程中打好断点,然后重新生成dll工程,为了输出dll到设置的目录下
然后
exe工程,属性-调试-启用非托管代码调试
exe工程,设置为启动项目
好了
运行,OK
上面的步骤是参考了网上很多资料总结出来的,可能有的设置没有用,不过反正全部设置OK了之后是肯定行的

3)https://blog.csdn.net/zhousiwei/article/details/81204290?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242

4)https://docs.microsoft.com/zh-cn/visualstudio/debugger/specify-symbol-dot-pdb-and-source-files-in-the-visual-studio-debugger?view=vs-2019#BKMK_Specify_symbol_locations_and_loading_behavior

5)当前不会命中断点还未为文档加载任何符号——c#联调c++库,无法进入库断点

 https://blog.csdn.net/wangMaryann/article/details/105681962

6)https://blog.csdn.net/leo_wc/article/details/76060565 ( 工具-选项-调试 -把(启用“仅我的代码”)前面的勾去掉 )

7)https://bbs.csdn.net/topics/397364420

所有这些都没有解决我的问题:最后发现 工具-选项-调试 -把(启用“仅我的代码”)前面的勾去掉同时还要 使用托管兼容模式。c++项目设置中调试器类型要设置为自动(不要设置为仅限本机)。不知道为什么这样设置才可以调试从C#进入c++代码,猜想最大的原因是我的c++中还引用了另一个C#写的dll,这个DLL的引入就导致本C++项目需要clr的支持,所以调试就要用托管兼容模式和调试器类型为不仅仅限本机。

感谢各位的阅读,以上就是“c#为什么不能调试C++生成的DLL”的内容了,经过本文的学习后,相信大家对c#为什么不能调试C++生成的DLL这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联,小编将为大家推送更多相关知识点的文章,欢迎关注!


分享标题:c#为什么不能调试C++生成的DLL
转载来源:http://scyanting.com/article/gcdjod.html