Windows应用编程
ComputerInBook
这个作者很懒,什么都没留下…
展开
-
c&c++的int和long各自所占字节数
做如下测试:在windows 64 bit 平台上,使用VC分别编译成32位程序和64位程序,int和long都是占4个字节。在Linux 64 bit 平台上(测试环境为suse linux,gcc编译器),编译成64位程序,int占4字节,long占8个字节。因此,int和long到底各占多少字节,是和平台和编译器实现有关。...原创 2021-12-28 17:03:07 · 2083 阅读 · 0 评论 -
如何使用windbg定位c/c++代码的内存泄漏。(转)
详见以下链接的讲述:https://www.deleaker.com/blog/2021/05/30/how-to-fix-memory-leaks-in-cpp-c-using-windbg/原创 2021-08-16 17:19:16 · 314 阅读 · 0 评论 -
关于VC++调试项 Multi-threaded Debug DLL的问题。
在vc++平台下,如果编写多个工程,则每个工程对应的的以上调试项必须设置为一致,否则会出现不可预料的异常,甚至违反常理的错误,导致你摸不到调试方向,比如,wstring参数传入被调用函数,而被调用函数中打断点显示传进来却是空字符串。正确的做法是,如果在调试环境下,应将每个工程的这一项都设置成统一项,如都设置成:Multi-threaded Debug DLL。设置路径:右键工程->属性->配置属性->C++->Code Generation->Runtime Libr.原创 2021-08-10 18:12:07 · 555 阅读 · 0 评论 -
Stack cookie instrumentation code detected a stack-based buffer overrun.
在vc++下面出现这个调试错误:Stack cookie instrumentation code detected a stack-based buffer overrun.(栈检测指令检测到基于栈的缓存区被某种操作越界操作了。)原因:在栈上执行了某种操作,例如,内存复制(memcpy),内存设置(memset),缓冲区格式化(sprintf),等等,查是这个操作已经越过了申请的栈空间的大小。系统在退出函数调用时,会清理栈空音,也就是说,越过函数的结束花括号(})时,就是报以上错误。要解决以上问题原创 2021-08-10 17:54:49 · 1328 阅读 · 0 评论 -
VC++ SYSTEMTIME转SQL SERVER日期时间
VC++平台下利用Native Client接口接供的OLE DB方法访问SQL SERVER数据库,其它数据类型都容易处理,主要就是处理时间不容易搞清楚,先查询OLE DB与SQL SERVER数据的对应关系,详读以下链接:https://docs.microsoft.com/en-us/sql/relational-databases/native-client-ole-db-date-time/data-type-support-for-ole-db-date-and-time-improveme原创 2021-04-02 17:32:43 · 220 阅读 · 0 评论 -
VC++下SYSTEMTIME时间与C#下DateTime时间的相互转换
1.先说一下应用场景:有时间,需要在不同平台不同语言编写的系统之间通信,如果牵扯到时间,就需要转换一致。这儿的应用场景是,在VC++下面使用SYSTEMTIME取得的时间,需要发送到C#编写的系统解析,相反,C#使用DateTime取得的时间,也需要发送到VC++编写的程序解析。2.实现步聚,难点主要在于VC++这一端:2.1需要先将SYSTEMTIME时间转换成64位整数,返过来也需要转64位整数转抽象为SYSTEMTIME结构时间,2个方法如下:__int64 SystemTimeTo...原创 2021-03-17 18:21:52 · 759 阅读 · 0 评论 -
C&C++申请和释放二维指针
假如CmdMsg是c语言中的结构体,是c++中的类。>> c语言中申请和释放二维指针:申请二维指针示例:m_pCmdMsgList = (CmdMsg**)malloc(MaxListCnt*sizeof(CmdMsg*));for(i = 0;i<MaxListCnt;i++){ m_pCmdMsgList[i] = (CmdMsg*)malloc(sizeof(CmdMsg));}释放二维指针示例:for(i = 0;i<MaxList...原创 2020-12-30 15:58:52 · 824 阅读 · 0 评论 -
使用thrift搭建lucene的rpc调用
最近要使用lucene搭建全文中文检索,使用IKAnalyzer中文分词,但是这两个库的最新版本都是使用Java实现的,如果C#要使用最新版的lucene,需要修改比较多的地方,比较难实现。索性改为使用Thrift的RPC方式实现调用,即使用Java作为服务端,C#作为客户端,经过测试,效率也很高,下面是实现主要步聚。1. 必备库和辅助工具:1.1 必备库:jdk1.8,thrift-0.13.0,lucene-8.5.2,IKAnalyzer2017_6_6_0,.net-4.0,apa...原创 2020-07-27 11:12:21 · 241 阅读 · 0 评论 -
.net remoting函数调用传对象作入参与传对象引用作入参的区别
1. 关于.net remoting生存期的问题 如果不熟悉.net remoting生存期问题,可能会出现莫名其妙的调用对象被销毁,其实这是.net remoting生存期到了, 一般在服务端应用,都希望永久不过期,于是重写下面函数。 /// <summary> /// 永久不失效 /// </summary> /// <re...原创 2019-08-24 22:59:22 · 172 阅读 · 0 评论 -
Windows平台下Web缓存的一种实现方法
1. 应用场景 我们很多基于浏览器的应用,需要定时刷新监控界面,将最新的数据展示出来,比如车辆定位应用系统,数量众多的物联网应用系统等等,都需要实时展示智能感知设备上报的数据,众多的App应用也需要接收推送信息或者主动请求数据。这些数据我们无疑需要缓存在后台内存,还有数量众多的基础数据,例如关系数据,用户数据,以及用户根据需求定义的各种数据表,这些数据都需要缓存到内存,以加快访问...原创 2019-04-04 23:26:02 · 612 阅读 · 0 评论 -
Web开发
1. 微软MVC框架http://www.asp.net/mvc原创 2016-01-01 15:18:17 · 700 阅读 · 0 评论 -
sqlserver数据批量写入(转)
如何在SQLServer中处理亿万级别的数据(历史数据),可以按以下方面进行:去掉表的所有索引用SqlBulkCopy进行插入分表或者分区,减少每个表的数据总量在某个表完全写完之后再建立索引正确的指定索引字段把需要用到的字段放到包含索引中(在返回的索引中就包含了一切)地址如下:http://blog.jobbole.com/80395/转载 2016-01-23 12:15:41 · 997 阅读 · 0 评论 -
简单内存泄漏检测方法 解决 Detected memory leaks! 问题(转)
我的环境是: XP SP2 . VS2003最近在一个项目中,程序退出后都出现内存泄漏:Detected memory leaks!Dumping objects ->{98500} normal block at 0x05785AD0, 152 bytes long. Data: 3C AC 4E 10 00 00 00 00 BC A4 4E 10 78 B6 37 00 O转载 2012-03-21 16:35:33 · 1150 阅读 · 0 评论 -
WinCE识别触摸笔的右键点击
WinCE系统中,触摸笔长按事件相当于是鼠标右键弹出上下文菜单,在网上大约能找到两段相似的代码,一是用timer事件实现,另一个是捕获WM_LBUTTON_DOWN消息,再调用SHRecognizeGesture实现,大致代码如下: 在桌面上按住左键不放 弹出右键菜单。case WM_LBUTTONDOWN:{ SHRGINFO shrg; HMENU原创 2012-07-31 01:07:31 · 3535 阅读 · 0 评论 -
VC++编译错误解决方法
1. 编译错误>LIBCMT.lib(invarg.obj) : error LNK2005: _invoke_watson already defined in LIBCMTD.lib(invarg.obj)解决方法:在Link属性的输入库中按顺序显式输入:LIBCMT.LIB MSVCRT.LIB重新编译即可!原创 2013-11-18 23:31:47 · 890 阅读 · 0 评论 -
用VC++开发Windows服务
用.net开发服务很简单,此处讲解使用VC++开发Windows服务1. 服务的组成一个服务由三部分组成:第一部分Service Control Manager(SCM),每个Windows系统都有一个SCM,SCM存在于Service.exe中,在Windows启动的时候会自动运行,伴随着操作系统的启动和关闭而产生和终止;第二部分为服务本身,一个服务拥有能从SCM收到信号和命令所原创 2014-02-09 16:50:58 · 1534 阅读 · 0 评论 -
Windows时间CTime与SYSTEMETIME格式化
//当前本地时间,精确到秒CTime time = CTime::GetCurrentTime();CString strMsg = time.Format(_T("%Y-%m-%d %H:%M:%S"));//UTC时间,精确到毫秒,转化为北京时间加8SYSTEMTIME systime;GetSystemTime(&systime);CString strMsg原创 2014-02-09 16:16:32 · 987 阅读 · 0 评论 -
关于WinCE调用RegDeleteKey不能删除注册表项的问题
在写一个WinCE注册表操作的时候,调用RegDeleteKey函数却不能删除注册表项,始终返回5的错误(ACCESS DENY)。查了一下,有的说是什么权限的问题,操作的时候都是先打开注册表,如果打开成功,即调用RegDeleteKey删除此键,其实这都是不对的,经过反复查看其文档介绍,终于在一个不起眼的句子中找到了答案。下面先介绍一个此函数,直接贴原文。RegDeleteKey (原创 2014-03-28 23:43:48 · 2089 阅读 · 0 评论 -
wince与pc连接同步出错解决方法
首先直接上一张报错的图导致wince设备与pc无法连接,不能调试也不能复制文件,很是不爽,网上查了一个可行的办法办法,经过验证,在wince5.0与wince6.0中都好使,问题解决。原文件地址:http://www.niwozhi.net/demo_c232_i12438.html 标题为:Wince运行一段时间后同步出错的问题原创 2014-08-01 15:10:53 · 4061 阅读 · 0 评论 -
string类find函数返回值判定
代码示例int main() { string s = "Alice Bob Charlie"; size_t position; position = s.find("none"); if (position >= 0) cout "Found! position is : " position endl;转载 2014-07-09 15:21:53 · 2432 阅读 · 0 评论 -
WINCE读取注册表
1. 读取注册表示例//从注册表读取路径HKEY RootKey = HKEY_LOCAL_MACHINE;HKEY hKey;//打开主键CString strSubKey = _T("\\Services\\GPSServ");long nRet = RegOpenKeyEx(RootKey,strSubKey,0,KEY_WRITE|KEY_READ,&hKey);原创 2015-01-26 00:28:08 · 1777 阅读 · 1 评论 -
在Windows平台下利用VC++下编译png库和zlib库
源代码包为:libpng-1.2.8, zlib-1.2.5编译工具:VS20081. 编译zlib-1.2.51.1 错误信息:会出现错误为找不到match686.obj与inffas32.obj。解决办法:看了一下附加依赖项里面有..\..\masmx86\match686.obj..\..\masmx86\inffas32.obj这两项,在相应目原创 2011-12-04 16:49:42 · 3996 阅读 · 0 评论