存档

‘C/C++’ 分类的存档

CRC32校验算法以及余式表生成

2011年3月9日 没有评论

CRC32算法,其中包含生成CRC32的余式表。代码很简单,如下。

阅读全文…

分类: C/C++ 标签: , ,

在非控制台程序中打印出printf

2011年2月15日 没有评论

在windows的程序开发中,如果需要输出调试信息一般可以OutputDebugString,使用DebugView就可以看到打出来的调试信息,不过,如果在一些跨平台的程序就不会用DebugView来调试,因为linux会编译通不过,但是,如果用了printf,在windows下又看到不到。

其实在VS 2005 & 2008里面有个命令叫editbin,进入vs 2005命令行提示,然后输入editbin就可以看到用法,如果对一个a.exe的程序执行以下命令

editbin /SUBSYSTEM:CONSOL "a.exe"

这样,这个a.exe在运行的时候,就会多一个控制台的窗口,里面可以看到所有printf打出来的信息。如果要取消,只需要把SUBSYSTEM改为Windows就可以了。

查内存泄露之打印程序对象个数

2010年10月1日 没有评论

当程序中的对象使用了智能指针后,很有可能因为互相引用导致的内存泄露,这个时候,可以在程序运行过程中打印出每个对象的个数。原理就是自己写一个map,索引是对象的名字,值为个数,每次构造的时候++,每次析构的时候–。大概代码如下:

阅读全文…

分类: C/C++ 标签: ,

Google Test初体验

2010年8月10日 1 条评论
Google Test

Google Test

Google Test是谷歌公司一套开放的可用于C/C++语言的单元测试框架。目前gtest的最新版本是1.5.0。下载gtest之后,首先,需要打开gtest的项目进行编译。

阅读全文…

分类: C/C++ 标签:

Boost asio的endpoint.address.to_string弹框报错

2010年8月9日 没有评论

最近遇到一个用户,启动软件就弹框报错,完全无法使用,然后一步一步调试跟踪,终于发现问题,讲出错代码定位在以下这行:

string remote_address = http_server_socket_->GetEndPoint().address().to_string();

阅读全文…

分类: C/C++ 标签: , , ,

MFC超链接库以及使用

2010年6月30日 2 条评论

在Windows程序开发时候,界面上经常会做一些超链接,但是由于MFC并没有这样的控件。于是我在网上发现了一个好用的超链接库,点击这里下载,其使用方法如下:

// 首先在.h文件中定义
CHyperLink m_HyperLink;
// 在.cpp中DDX绑定,其中IDC_HYPERLINK是普通Static控件
DDX_Control(pDX, IDC_HYPERLINK, m_HyperLink);
// 设置URL以及下划线
CString sUrl = "http://www.sizeof.cn";
m_HyperLink.SetURL(sUrl);
m_HyperLink.SetUnderline(FALSE);
分类: C/C++ 标签: , ,

C++获得计算机网卡MAC地址

2010年5月11日 没有评论

C++获得计算机网卡MAC地址,以下程序采用静态加载的办法来实现的,建议在实际项目中,动态加载iphlpapi.dll,来实现获得网卡MAC地址,因为不是每台计算机都有iphlpapi.dll这个问题的,如果是静态加载的话,就可能直接报错。代码如下:

阅读全文…

分类: C/C++ 标签: , ,

命令行以及DLL程序用SetTimer实现定时器

2010年5月7日 没有评论

SetTimer是Windows程序下的设置定时器用的,通过SetTimer设置定时器之后,系统会向窗口发送WM_TIMER消息。系统通过响应WM_TIMER消息来执行代码。但是通过在命令行程序或者DLL里面,没有窗口,所以收不到系统发送的WM_TIMER,所以,这个时候,就要使用另外一种方式,那就是自己建立消息循环。下面是一个命令行程序的示例,基本显示了如何在命令行以及DLL程序如何用SetTimer实现定时器:

阅读全文…

分类: C/C++ 标签: , , ,

MFC Tab控件内的对话框访问外层对话框

2010年5月5日 没有评论

MFC开发应用程序时,用到Tab控件的时候,会嵌套一个Child属性的子对话框,如果子对话框需要访问父对话框的函数时,可以使用GetParent()函数。如下:

CFatherDlg* m_father_dlg = (CFatherDlg*)m_child_dlg->GetParent()->GetParent();

第一次GetParent()的时候,获得的Tab空间,第二次GetParent(),才是父对话框。

分类: C/C++ 标签: , ,

Winpcap无法安装的解决办法

2010年4月13日 没有评论

在安装Wireshark的时候提示Winpcap本机已经存在,但是Wireshark又没办法用,重装Winpcap又提示错误。所以,必须首先把系统上的Winpcap删除。具体的操作办法如下:

1. 重新启动,进入安全模式
2. 在安全模式中,删除以下文件

c:\windows\system32\Packet.dll
c:\windows\system32\drivers/npf.sys
c:\windows\system32\WanPacket.dll
c:\windows\system32\wpcap.dll
c:\windows\system32\pthreadVC.dll

3. 重新启动系统后,重新安装Winpcap即可。

分类: C/C++ 标签: ,