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、本机 C++ dll 项目中的位置在哪里?
vs2010调试时为啥会出现clr.dll与mscordacwks.dll版本不匹配?
解决VS2013调试ASP.NET中无法调试的问题:当前不会命中断点。在 XXXX.dll 中找到了 XXX.cs 的副本,但是当前源代码与 XXXX.dll 中内置的版本不同。