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 函数 不写可能会报错

原文地址:http://blog.51cto.com/haidragon/2115576

时间: 2024-10-16 23:53:15

vs 中项目与 dll 一起调试和参数传递的相关文章

关于vs2012解决方案中项目DLL文件引用问题

今天用vs2012建了项目框架,老是出现说解决方案中的项目dll文件不存在,但是我按照路径去找是可以找到这个文件的,也就是说这个文件存在的.我按照引用顺序单个编译每个项目都是成功的,就是当我编译整个解决方案的时候就会报某个项目的dll文件不存在.但是我运行时可以运行的.这种问题还是我第一遇到过.我当时就在想是不是我的项目中出现循环引用了啊,因为这种错误一般情况下是不会出现的,我检查了一下项目架构,的确没有这种低级错误. 出现这种现象后来我想了一会,首先就是出现这样的原因肯定是项目在编译时先后顺序

ASP.NET项目中引用全局dll

在ASP.NET项目中,有些dll是全局dll,也就是说,没有放在单个项目的引用中.它们一般存放在如下目录C:\Windows\assembly中 这个时候,我们需要在单个项目中引用他们,应该如何做呢 在项目的web.config文件中,在system.web路径下加入如下语句 <system.web> <compilation debug="true"> <assemblies> <add assembly="System.Core

Native Application 开发详解(直接在程序中调用 ntdll.dll 中的 Native API,有内存小、速度快、安全、API丰富等8大优点)

文章目录:                   1. 引子: 2. Native Application Demo 展示: 3. Native Application 简介: 4. Native Application 有何妙用: 5. MJ0011 关于 Native Application 的文章整理: 6. 互联网上其他关于 Native Application 的文章整理: 7. 小结: 1. 引子: 其实在好久以前就看了 MJ0011 翻译的那个<Native 应用程序详细>系列的文

在VS2015中用C++创建DLL并用C#调用且同时实现对DLL的调试

from:http://m.blog.csdn.net/article/details?id=51075023 在VS2015中先创建C#项目,然后再创建要编写的动态库DLL项目,这样做的好处是整个解决方案的编程环境是C#模式,这样就可以有很多智能的提示或快捷的编程方式在整个解决方案中都可以使用. 一:创建C#控制台应用程序:用于调用C++编写的DLL (1)启动VS2015>文件>新建>项目,在弹出的新建项目对话框中按下图进行选择填写,先填写项目的名称,再修改解决方案的名称. (2)项

VS中无法加入断点进行调试解决方案

原文地址:http://blog.csdn.net/gukesdo/article/details/6535054 [ 1] 以前也遇到过同样的问题,但没有问个为什么,也没有探个毕竟.昨天调试一个DLL,添加输出信息吧,太麻烦而且不轻易定位,  但设置断点后按“F5”,断点不可用,气泡提示“当前不会命中断点,还没有为该文档加载任何符号.  ”再右键->“位置”->“答应源代码与原始版本不同”,还是不行.77777我还不信了,整它!  后来才发现,“Alt+F7”->“配置属性”->

在VS2015中用C++创建DLL并用C++调用且同一时候实现对DLL的调试

一:用C++创建DLL? ?? ? ? ? ?依照[在VS2015中用C++编写可被其他语言调用的动态库DLL]提示创建C++编写的DLL.或參考[在VS2015中用C++创建DLL并用C#调用且同一时候实现对DLL的调试]中的步骤二:用C++创建DLL. 二:用C++隐式调用DLL? ?? ? ? ? ? 由于是隐式调用DLL所以在Debug模式下生成DLL了.然后调用时也在Debug模式下.这样在调试时就不用赋值动态库了 ? ? ? ? 隐式调用仅在C++CallDLL.h文件里设置了lib

利用vs2010制作C语言 dll文件,并在其它程序中调用该dll文件

一.为什么需要dll 代码复用是提高软件开发 效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用.比较常见的例子是各种应用程序框架, 如ATL.MFC等,它们都以源代码的形式发布.由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒复用”.“白盒复用”的缺点 比较多,总结起来有4点. 暴露了源代码: 容易与程序员的“普通”代码发生命名冲突: 多份拷贝,造成存储浪费: 更新功能模块比较困难. 实际上,以上4点概括起来就是

OpenCV 无法启动此程序,因为计算机中丢失opencv_core249.dll。请尝试重新安装改程序已解决此问题

换了64位的系统,配置好之后运行之前的程序,竟然给我抛出这个错误.应该是我的opencv没有安装对吧.系统报错 无法启动此程序,因为计算机中丢失opencv_core249.dll.请尝试重新安装改程序已解决此问题 那就是缺少opencv_core249.dll动态链接库了. [解决方法] 1 在安装目录下找到这个链接库 (但是不知道为什么我引用的库还是要x86下的才行,郁闷中) 2 复制到指定的目录下 64位系统 C:\Windows\SysWOW64 32位系统 C:\Windows\Sys

c++/c语言中如何调用DLL

参考网站如下: ?http://blog.csdn.net/yusongwhu/article/details/7577461 http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html 具体内容如下: (1)篇? 今天在研究怎么在vc中调用动态dll的问题,看了一个下午,总算有些眉目. 首先来说说调用的原理: 调用DLL,首先需要将DLL文件映像到用户进程的地址空间中,然后才能进行函数调用,这个函数和进程内部一般函数的调用方法相同