C++生成的DLL被C#代码引用,就这么简单的一个例子,用debug方式启动,但不能进入c++源码中。两个项目都在同一个解决方案里面。
网上相关的帖子:
1)https://blog.csdn.net/chunleixiahe/article/details/53428429
调试方法:【dll工程和调用dll的exe工程在同一个解决方案中】
dll工程,属性-配置属性-调试-把 命令 为 调用该dll的exe工程的bin\Debug\*.exe
dll工程,属性-配置属性-调试-把 调试器类型 设置为 仅限本机
dll工程,属性-配置属性-常规-把输出目录设置为 调用该dll的exe工程的bin\Debug目录下
在dll工程中打好断点,然后重新生成dll工程,为了输出dll到设置的目录下
然后
exe工程,属性-调试-启用非托管代码调试
exe工程,设置为启动项目
好了
运行,OK
上面的步骤是参考了网上很多资料总结出来的,可能有的设置没有用,不过反正全部设置OK了之后是肯定行的
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的支持,所以调试就要用托管兼容模式和调试器类型为不仅仅限本机。