vs 中项目与 dll 一起调试和参数传递

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs 中项目与 dll 一起调试和参数传递相关的知识,希望对你有一定的参考价值。

1.打开 vs 创建项目
技术分享图片
2.添加项目
技术分享图片
技术分享图片
技术分享图片
3.配置 dll(exe的路径)
技术分享图片
4.调试的时候俩个都最好生成一下 不然报错

项目与 dll 之间的参数传递(结构体 函数指针等)

如DEBUG_EVENT 结构体 map<string, pVoidFun> (pVoidFun为函数指针)
先导出一个函数
技术分享图片
实现 这里要注意的是打印结构体时注意溢出问题

 //printf("%08x  %08x  %08x %08x  \n", hPorc, hThread, m_DebugEvent, Funmap);    //产生溢出 后面打印的是结构体的数据 因为后面覆盖了
    printf("%08x  %08x  %08x %08x  \n", hPorc, hThread, &m_DebugEvent, Funmap);

技术分享图片
5.调用 (这里用了点技巧参数为调用一个函数 函数返回值为 map)

 map<string, pVoidFun> Funmap;
 DWORD CCyichang::GetFunmapAddr()
{
    return (DWORD)&Funmap;
}
 myfun(myCCyichang->hProc, myCCyichang->hThread, myCCyichang->m_DebugEvent, (DWORD)(myCCyichang->GetFunmapAddr()));   //地址与类型(DWORD,map<string, pVoidFun>**)无关32 位push4个字节  64 位push 俩遍 也就是 8 个字节  类型只是用来方便使用想怎么写就怎么写

技术分享图片
技术分享图片
技术分享图片
技术分享图片
6.注意一个溢出问题
技术分享图片
7.最后注意的是不要懒 dll一般写也main 函数 不写可能会报错
技术分享图片

以上是关于vs 中项目与 dll 一起调试和参数传递的主要内容,如果未能解决你的问题,请参考以下文章

VS2013调试时如何加载dll

从 python 调试 VS2010 中的 c++ dll

调试信息(断点等)存储在 VS2013、本机 C++ dll 项目中的位置在哪里?

vs2010调试时为啥会出现clr.dll与mscordacwks.dll版本不匹配?

VS2019尝试dll工程与控制台联调

解决VS2013调试ASP.NET中无法调试的问题:当前不会命中断点。在 XXXX.dll 中找到了 XXX.cs 的副本,但是当前源代码与 XXXX.dll 中内置的版本不同。