51CTO博客开发
最近程序中打开文件时,失败了,最后代码问题在: fopen_s(&pFile,strPath.c_str(),"rb+");主要是"rb+"。首先来看下介绍,主要是windows下的CRT相关的文件打开操作了。C89标准中是 fopen:FILE * fopen(const char *file, const char *mode);windows中有fopen_s,_fsop
最近有用到detour,属于一种api拦截的方式了,是微软研究院出的一个库(可以网上下载,是源码形式,有makefile,可用vs的命令行工具来编译出来)。可以替换掉我们关心的api,进入到我们的处理中。当然,api拦截,首先需要借助Dll注入,才能够去影响你想改变的进程,这可通过上篇文章中全局hook来实现:可在hookProc回调中,进行detour,然后在DLL的proc_detach中un
最近有用到全局hook,其实可参考windows核心编程,全局hook也是Dll注入的一种方式。首先,必须是一个Dll,可导出一个接口,在其中设置全局hook,类型为WH_GETMESSAGE(这样,应该是所有进程都会被hook到了),这样成功后,系统会把这个Dll注入到有getmessage的所有进程中,即会为每个进程隐式调用下loadlibrary。然后每次getmessage时,都会回调进回
最近需要验证字节存储大端小端的问题,于是就要在windows下装个虚拟机验证一下,可是像virtualBox 这种都是按着硬件的方式来虚拟的,所以硬件是intel的也没法模拟出大端的CPU。最后网上搜到qemu,它是用软件的方式来模拟,所以可以模拟出很多 平台的很多机器架构的东西,当然因此,它也会有点慢。(可以下载kqemu来帮助模拟,这样会几乎达到真机的速度,但是我还没有尝试)。由于是命令行方式
最近在做arm64的移植,在网上看到了lint系列静态代码分析工具,在windows下就是pc-lint了,便拿来用了一下,功能还是挺强大的。初次上手,过程中也遇到不少疑惑,写此文来记一下。首先,安装好pc-lint后,可去官网上下载最新的补丁(包括补丁更新器lpatch和补丁配置如l9-a-b.lp),这些都是最新的功能补充,网址:http://www.gimpel.com/html/ptch9
首先,参看这篇文章:http://msdn.microsoft.com/en-us/library/windows/desktop/dn633971%28v=vs.85%29.aspxloadlibrary时,会先加锁,然后调用dllmain,然后解锁返回。所以dllmain中,要做的初始化或清理越简单越好。该做的复杂的初始化,应该延迟,在loadlibrary之后。不能做的事:LoadLibra
//dll 动态加载 调用 类 函数小结:静态加载时,调用类成员函数,很简单。此次研究了下动态加载。首先困难点:The first problem is that C++ member function names are decorated names (Specifying extern "C" does not help).The second problem is that C
最近在弄boost test单元测试的时候,遇到了一个运行程序后就闪退掉的问题,找了好久才发现,原来是没有进入到boost 自己的main函数中,因为链接的其他lib中,有一个文件也定义了main函数,编辑器最终是选择了那个main函数作为程序的入口。在 vs下 main函数 通常是 int _tmain( int argc, _TCHAR* argv[ ] )的形式,这是为了统一u
#include <boost/test/included/unit_test.hpp> 与 #include <boost/test/unit_test.hpp> 区别: 前者直接包含源代码,后者还需链接unit_test的lib (但前者这样会很容易造成与现有其他代码的种种冲
C与C++在语法细节上还是有一些差异的,虽然一般情况下可能这些差异不足以造成结果的区别,但有些代码确实会有影响。这次,主要总结下左值右值的差异。在C中,很多左值运算符的结果都不再是左值,然而在C++中,只要逻辑上可行,左值运算符的结果仍然是左值。C++的这种方式,让运算符表达式之间的灵活性更大。1、++i, 我们都习惯了在C++中,i 自加后返回自己;然而在C中i自加后,返回的是个临时的副本,即
strcpy 使用不.太.安全,strcpy_s只是windows下的,且在release版本也会弹出警告框,不太爽。所以还是用strncpy比较好,在windows下可以预定义#define _CRT_SECURE_NO_WARNINGS(要定义在包含string.h头文件的前面),来屏蔽掉使用_s版本之类的warning。但是使用strncpy也是有一个需要注意的地方,就是它有时是不会给你在字
一直都说,多字节字符,何为多字节,并不只是一个char就是了。英文的字符都是char能表示,但是中文字符,是2个字节表示的。所以,char s[] = "ha哈哈"; int l = strlen(s);// 6 char
以前是没有学C,直接学的C++,觉得也没什么。后来渐渐觉得,要想成为高手,学C是必须的。按 Effective C++中的说法,C++分为四个部分:1. C2. 类和继承等面向对象3. 模板泛型编程4. STL按照这个来,我觉得C++程序员需要看的一些书籍:C程序设计语言,C FAQs,C和指针,C专家编程;C++ Primer,C++程序设计语言,Effective C++,More Effec
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号