摘要: 两种方式,一种命令行使用nmake,一种通过visual studio。0x01源码下载http://www.7-zip.org/download.html0x02makefile修改%7z_source%\CPP\Build.mak文件第34行附近,找到LFLAGS = $(LFLAGS) -OP... 阅读全文
posted @ 2015-09-28 16:08 lniwn 阅读(5091) 评论(0) 推荐(0) 编辑
摘要: 1 char* vector_advance(char* val)大部分人都遇到过上面的函数,最大的问题就是资源由谁释放?再看一个函数1 char (&vector_advance(char (&var)[4]))[4]这个函数的意思是,vector_advance是函数名,接收一个包含4个元素的数... 阅读全文
posted @ 2014-07-28 21:48 lniwn 阅读(221) 评论(0) 推荐(0) 编辑
摘要: Boost.ScopeExit库由于种种原因,C++中没有Java或C#中的try{}finally{}语句,虽然有SEH,可以实现finally效果,但是可定制性太差,不尽人意。SEH实现的finally语句__try{ throw std::bad_exception();}__finally{... 阅读全文
posted @ 2014-07-27 00:11 lniwn 阅读(1022) 评论(0) 推荐(0) 编辑
摘要: 看了在Windows编译x264的文章,最终都是只生成libx264.a文件,无法在Windows下使用,后来终于找到能用的了,结合自身实践写下来,文章参考了http://www.cnblogs.com/xiongjiaji/archive/2012/06/08/2541265.html,在此表示感谢。1.环境准备下载mingw(包含msys), x264源码,添加相应的环境变量,网络上很多其他文章都有介绍,不再赘述。mingw installer: http://sourceforge.net/projects/mingw/files/x264: http://www.videolan.or 阅读全文
posted @ 2014-01-11 23:51 lniwn 阅读(1355) 评论(2) 推荐(0) 编辑
摘要: 通过上位机软件给英飞凌芯片发送信号,模拟喷油,节气门开度等信息,但是在重复发送命令和reset过程中,会出现读取不到数据的情况,调查了好久也没有找到原因,与下位机通信的接口都是调用的微软封装的SetupDi系列函数,但是总是读不上来数据,问题原因有待调查,今天找到了HID API的纯C封装版本,而且跨平台,看了下介绍,很强大,记录下来。先贴例子程序 1 /******************************************************* 2 Windows HID simplification 3 4 Alan Ott 5 Signal 11 So... 阅读全文
posted @ 2013-11-06 23:27 lniwn 阅读(2226) 评论(0) 推荐(0) 编辑
摘要: 在C++的继承关系中,只有虚函数可以被继承,而构造函数不可以是虚函数,所以构造函数不能被继承,但是可以通过某种特殊手段,达到继承的效果。先看看C++中using关键字的一个应用 1 #include 2 using namespace std; 3 4 struct Base { 5 void f(double i) {cout << "Base: " << i << endl;} 6 }; 7 8 struct Derived : Base { 9 using Base::f;10 void f(int i) {cout << 阅读全文
posted @ 2013-11-03 01:01 lniwn 阅读(1524) 评论(0) 推荐(0) 编辑
摘要: 在C++98中,模板的实参类型有限制,即局部类型和匿名类型不能作为模板实参。 1 template class X{}; 2 template void TempFun(T t){} 3 struct A{} a; 4 struct {int i;} b; // b是匿名类型变量 5 typedef struct {int i;} B; // B是匿名类型 6 7 void fun() { 8 struct C{} c; // C是局部类型 9 X x1;10 X x2;11 X x3;12 TempFun(a);13 T... 阅读全文
posted @ 2013-11-03 00:20 lniwn 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 先来复习下C++虚函数的特性:①重载函数需要与父类中虚函数的签名相同;②子类中的重载函数是否有virtual标识不影响继承树。按照这些特性,有如下代码 1 #include 2 using namespace std; 3 4 class MethObject { 5 6 public: 7 virtual double Arith()=0; 8 virtual void Print()=0; 9 };10 11 class Printable:public MethObject {12 13 public:14 double Arith()=0;15 void Prin... 阅读全文
posted @ 2013-11-02 14:16 lniwn 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 如何遍历一副图像?最简单的方法就是写个双层循环,增量分别为行和列,但是如何高效遍历一副图像?核心思想就两点:①减少双重循环中外层循环的次数②对图像处理过程中,| & 比普通运算效率高。在一副彩色图像中,计算机是以二维数组的形式来存储,数组中每个元素是一个包含三个元素的向量,通常是BGR(或者RGB)。所以一个宽度为W,高度为H的图像需要一个大小为W*H*3的uchar构成的内存块。但是出于性能的考虑,每行会填补一些额外的像素,这是因为,如果行的长度是4或者8的倍数,一些多媒体处理芯片可以更高效的处理图像,这些额外的像素不会被显示或者保存,填补的值将被忽略。 1 void colorRe 阅读全文
posted @ 2013-11-01 09:54 lniwn 阅读(594) 评论(0) 推荐(0) 编辑
摘要: 在C++98中,可以在头文件类的声明中使用“=”来给成员变量初始化,但是要求却很苛刻,被初始化的成员变量必须是:静态整形常量或者静态枚举类型。 1 class Init { 2 public: 3 Init():a(0){} 4 Init(int d):a(d){} 5 6 private: 7 int a; 8 const static int b = 0; 9 int c = 1; // 成员,无法通过编译10 static int d = 0; // 成员,无法通过编译11 static const double e ... 阅读全文
posted @ 2013-10-25 11:09 lniwn 阅读(499) 评论(0) 推荐(0) 编辑