随笔分类 -  c++ dll

摘要:转自:http://www.cnblogs.com/lidabo/archive/2012/11/29/2795269.html例子:http://www.codeproject.com/Articles/67091/Mouse-and-KeyBoard-Hooking-utility-with-VC一、基本概念: 钩子(Hook),是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。 钩子实际上是一个处理消息的.. 阅读全文
posted @ 2013-09-16 12:42 fff8965 阅读(2092) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/wgwg1985/article/details/6989288在windows开发过程中需要查看一些已有的exe或dll的信息,例如exe调用了哪些dll,dll又有哪些导出函数等。找到了一些比较实用的工具,在这里总结一下:1. Dependency Walker 这是VC6自带的一款工具,它可以查看exe程序调用了哪些dll,dll里包含了哪些函数,这个exe调用了该dll的哪些接口。比较通用的一款工具,但对部分exe程序,显示出来的dll信息不全。2. DebugApiSpy 这款工具在上篇博文中有记录,可以在exe运行过程中查看它具体调用 阅读全文
posted @ 2013-05-28 14:23 fff8965 阅读(2791) 评论(0) 推荐(0)
摘要:转自:http://blog.csdn.net/dengrk/article/details/1937430一. DUMPBIN 命令行Microsoft COFF 二进制文件转储器 (DUMPBIN.EXE) 显示有关 32 位通用对象文件格式 (COFF) 二进制文件的信息。可以使用 DUMPBIN 检查 COFF 对象文件、标准 COFF 对象库、可执行文件和动态链接库 (DLL)。(在VC Studio 目录下有dumpbin.exe工具,环境配置文件路径:visual Studio/VC98/Bin/VCVARS32.BAT,可放到命令提示符下运行。执行后,在其它的命令提示符下可执行 阅读全文
posted @ 2013-05-28 14:19 fff8965 阅读(1104) 评论(0) 推荐(0)
摘要:转自:http://blog.sina.com.cn/s/blog_597fcab10100ck4a.html1、 DLL的概念DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。静态链接库与动态链接库的区别:(1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。(2) 静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静 阅读全文
posted @ 2013-04-15 11:57 fff8965 阅读(291) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/cswuyg/archive/2011/10/06/DLL2.html2011.10.6烛秋一、导出类的简单方式这种方式是比较简单的,同时也是不建议采用的不合适方式。只需要在导出类加上__declspec(dllexport),就可以实现导出类。对象空间还是在使用者的模块里,dll只提供类中的函数代码。不足的地方是:使用者需要知道整个类的实现,包括基类、类中成员对象,也就是说所有跟导出类相关的东西,使用者都要知道。通过Dependency Walker可以看到,这时候的dll导出的是跟类相关的函数:如构造函数、赋值操作符、析构函数、其它函数, 阅读全文
posted @ 2013-04-15 11:56 fff8965 阅读(214) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/cswuyg/archive/2011/09/30/dll.html2010.8.31~2010.9.1总结2011.9.28~30整理烛秋动态链接库的使用有两种方式,一种是显式调用。一种是隐式调用。(1)显式调用:使用LoadLibrayr载入动态链接库、使用GetProcAddress获取某函数地址。(2)隐式调用:可以使用#pragma comment(lib, “XX.lib”)的方式,也可以直接将XX.lib加入到工程中。DLL的编写编写dll时,有个重要的问题需要解决,那就是函数重命名——Name-Mangling。解决方式有两种 阅读全文
posted @ 2013-04-15 11:55 fff8965 阅读(225) 评论(0) 推荐(0)
摘要:转自:http://www.cnblogs.com/manyou/archive/2012/07/20/2600565.html问题描述:对 PInvoke 函数“xxFunction()”的调用导致堆栈不对称。原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。请检查 PInvoke 签名的调用约定和参数与非托管的目标签名是否匹配问题解决:1、在c#中函数声明处改一个参数,[DllImport("xx.dll", EntryPoint=“xxFunction”, CallingConvention = CallingConvention.Cdecl)]调用时不 阅读全文
posted @ 2013-01-22 10:35 fff8965 阅读(464) 评论(0) 推荐(0)
摘要:右键项目添加“模块定义文件(.def)”内容:LIBRARYEXPORTS functionNamefuncionName为要导出的函数名,不用填参数和返回值 阅读全文
posted @ 2013-01-22 10:03 fff8965 阅读(329) 评论(0) 推荐(0)
摘要:转自:http://blog.163.com/bbluesnow@126/blog/static/277845452012123114924563/是自己调试时候用的,还是很好用的,留下来记住。如下是步骤:1、在“Solution Explorer”中找到要调试的dll项目,点击右键,选择Set as StartUp Project,将dll设置为调试启动项目;然后选择dll项目,点击右键,选择Properties,打开属性页设置页面;2、在Properties 页面的中,选择Configuration Properties下拉菜单,然后选择Debugging;3、在Debugging的页面中 阅读全文
posted @ 2013-01-22 10:01 fff8965 阅读(1630) 评论(0) 推荐(0)