
windows
青青小禾
这个作者很懒,什么都没留下…
展开
-
LIB和DLL的区别与使用
共有两种库:一种是LIB包含了函数所在的DLL文件和文件中函数位置的信息(入口),代码由运行时加载在进程空间中的DLL提供,称为动态链接库dynamic link library。一种是LIB包含函数代码本身,在编译时直接将代码加入程序当中,称为静态链接库static link library。共有两种链接方式:动态链接使用动态链接库,允许可执行模块(.dll文件或.exe文件)仅转载 2014-10-28 18:54:33 · 360 阅读 · 0 评论 -
CreateMutex,WaitForSingleObject一定要在线程里面才阻塞?
int _tmain(int argc, _TCHAR* argv[]){ mutex = CreateMutex( NULL, FALSE, NULL ); WaitForSingleObject( mutex, INFINITE ); WaitForSingleObject( mutex, INFINITE ); printf("here"); return 0;}转载 2017-04-20 08:52:51 · 2192 阅读 · 0 评论 -
用户级线程同步互斥对象和内核级线程同步对象
事件确实可以严格控制每个线程的执行顺序,但大多数时候,每个线程都是一个单独的任务副本,即不存在说一定要先让线程A操作公共资源再让线程B操作,B先A后也可以,只要保证公共资源不被同时改写,能正确的读写就行了。因此大多数时候临界区就可以了,事件的开销要大很多。这个是的,用户级线程同步互斥对象和内核级线程同步对象所消费的资源相差还是有点大。事件和信号量一般在线程间原创 2017-04-19 14:25:09 · 503 阅读 · 0 评论 -
多线程的优缺点
很多编程人员都认为,使用多线程能够提升程序的性能,如果少量的线程能够提升程序的性能,他们就会认为更多的线程能够更好。但实际上,多线程只是为不同的程序比较合理地安排运行时间,更加充分的利用系统资源。这当中存在着一个线程数和程序性能的平衡,过多的线程可能会严重影响程序的性能。这种影响主要有以下两个方面:A:将给定的工作量划分给过多的线程会造成每个线程的工作量过少,因此可能导致线原创 2017-04-19 09:14:55 · 1525 阅读 · 0 评论 -
深入浅出 mfc Command Routing 命令传递
MFC.cpp#include "stdafx.h" #include "MY.h"extern CMyWinApp theApp;extern void printlpEntries(AFX_MSGMAP_ENTRY *lpEntry);BOOL CCmdTarget::OnCmdMsg(UINT nID,int nCode){ AFX_MSGMAP *pMess原创 2015-01-03 19:40:20 · 440 阅读 · 0 评论 -
深入浅出MFC Message Mapping 消息映射
stdafx// stdafx.h : 标准系统包含文件的包含文件,// 或是经常使用但不常更改的// 特定于项目的包含文件//#pragma once#include "targetver.h"#include #include #include #include using namespace std;mfc.h#include "afxmsg_.h"#原创 2014-12-31 11:01:38 · 528 阅读 · 0 评论 -
深入浅出MFC DECLARE_DYNAMIC/IMPLEMENT_DYNAMIC 宏 模拟代码
MFC.h#pragma once#define BOOL int #define TRUE 1#define FALSE 0#define LPCSTR LPSTRtypedef char* LPSTR;#define UINT int#define PASCAL _stdcall class CObject;struct原创 2014-12-28 11:48:59 · 1072 阅读 · 0 评论 -
深入浅出 MFC Dynamic Creation 动态创建
MFC.H#pragma once#define BOOL int #define TRUE 1#define FALSE 0#define LPCSTR LPSTRtypedef char* LPSTR;#define UINT int#define PASCAL _stdcall class CObject;st原创 2014-12-28 19:42:43 · 695 阅读 · 0 评论 -
深入浅出mfc “fatal error LNK1561: 必须定义入口点”解决方法
自学MFC在 Visual Studio 2010 里面,建立了一个空项目。添加了一个 Hello.cpp 和 Hello.h然后,编译的时候,报错:“fatal error LNK1561: 必须定义入口点”网上找了许久,发现一个解决方法。解决方案上,右键->属性->链接器->高级->入口点,设置成:WinMainCRTStartup转载 2015-01-06 23:30:51 · 1332 阅读 · 1 评论 -
VS2010创建并使用DLL
一、为什么需要dll代码复用是提高软件开发 效率的重要途径。一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用。比较常见的例子是各种应用程序框架, 如ATL、MFC等,它们都以源代码的形式发布。由于这种复用是“源码级别”的,源代码完全暴露给了程序员,因而称之为“白盒复用”。“白盒复用”的缺点 比较多,总结起来有4点。暴露了源代码;容易与转载 2014-10-28 19:32:11 · 430 阅读 · 0 评论 -
破解时常用汇编命令
基本上多数破解的思路是一样的,就是将本来判断为true的时候干的事情改为逻辑值为false就做,因此常常需要替换一些汇编命令:cmp a,b 比较a与bmov a,b 把b的值送给aret 返回主程序nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面(解释:ultraedit打开编辑exe文件时你看转载 2017-04-21 09:17:34 · 652 阅读 · 0 评论