看了网上很多文章以及vs官方说明,目前发现
● unity里不能实现从c#的DLLImport的函数声明 跳转到c++实际代码的,而这点可以在C#控制台程序内实现
● unity的vs解决方案包含了C#工程和C++工程时,只能调试C#和C++中的一个,不能两个同时在一个工程内调试,这点在C#控制台程序内实现。要调试,只能是两个vs工程,一个调试C#,一个调试C++
如果可以做到unity中C#和C++工程同时在一个解决方案中调试的,请务必在评论区留言打我脸,因为我也想知道o(╥﹏╥)o
微软官方有提供C#控制台程序调用C++的调试方案
个人实践过,可以同一个解决方案不同的项目,支持单步调试,从C#跳转到C++(调试时才能跳转,普通F12不能跳转)
Unity内调试DLL
C++代码可以同微软官方给出的,DLL需要生成或复制到Plugins/x86_64(根据你的系统是64为还是32位决定的)下(如果提示“DllNotFoundException: xxx.dll”多半说明dll不在plugins对应的平台目录下)
pdb文件与DLL同级,生成或复制都可
(PS:vs修改DLL输出目录和pdb输出目录,可分别设置:项目的配置属性->常规->输出目录;项目的配置属性->链接器->调试->生成调试信息(选择/DEBUG),生成程序数据文件(写入pdb要生成的目录))
之后,选择vs的 “调试” 菜单->附加到进程->选择Unity.exe,打上断点,断点所在函数被调用时就可以开始调试了
(
这一步也可以通过下图设置 命令和附加来避免每次都要手动附加进程的繁琐操作
命令指的unity编辑器运行程序的路径,附加选是
另外,可以C#与C++同时调试,C#按正常的附加到Unity进程即可
一些操作的验证
网上有些操作如下,验证过,没有必要
例如这篇
1.VS菜单栏【工具】-> 【选项】
2.在选项对话框中设置【适用于Unity的工具】->【访问项目属性】为True
3.打开项目属性页面,选中【启用本地代码调试】
其他调试方法:
直接调试打包好的exe项目,参见