【转】error LNK2001: unresolved external symbol _main解决办法

Posted by & filed under Uncategorized.

  解决外部符号错误:_main,_WinMain@16,__beginthreadex在创建MFC项目时, 不使用MFC AppWizard向导,  就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main (gd)LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadexnafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex1. Windows子系统设置错误, 提示:libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _mainWindows项目要使用Windows子系统, 而不是Console, 可以这样设置:[Project] Read more […]

【转】使用Snmp++获取MIB表

Posted by & filed under Uncategorized.

  Snmp++是一套强大的网络管理应用开发包。它提供了Snmp网管协议所描述的所有命令,并且提供SMI数据类型的解析。MIB数据包含普通数据和表数据。在提取表数据时,由于表项的数量和Oid都不确定,所以不能通过某个特定的Oid直接获得取值。通常,关于Snmp的书上都会介绍使用GetNext命令来实现表的遍历,这种方法比较简单,这里主要讨论该算法的原理和如何用Snmp++实现。 MIB表是通过行和列来描述的。其中列表头是各个表项的原始Oid,而行表头则是index。这样以来一个Oid和一个index就唯一地确定了表中的一项。比如在接口表中,ifDescr(Oid为1.3.6.1.2.1.2.2.1.2)为一列,而具体对于某一个接口则为一行。这样,某一具体表项的Oid就表示为:列Oid+index的形式。下图形象地描述了一张表的格式。 ifIndex 1.3.6.1.2.1.2.2.1.1 ifDescr 1.3.6.1.2.1.2.2.1.2 ifType 1.3.6.1.2.1.2.2.1.3 ifMtu 1.3.6.1.2.1.2.2.1.4 Ifspeed 1.3.6.1.2.1.2.2.1.5 Index0 xxx xxx xxx xxx xxx Index1 xxx xxx xxx xxx xxx Index2 xxx xxx xxx xxx xxx 按照协议描述,最基本的方法是通过index来获取某一表项。但事实上,index本身也是一个表项,再加之有些表需要多个index,并且各种index的数据类型不同,比如要手工处理ip地址类型的index就比较困难,所以这种方法具有很难的操作性。因此,在实际编程时,可以采取一些比较技巧化的方法。 从Snmp中对于GetNext命令的描述可知,如果GetNext的参数为一个表中某一列的表头Oid,比如前面的ifDescr(1.3.6.1.2.1.2.2.1.2),则得到的值为该列第一行元素值,并可得到该值的Oid。再对取得的Oid使用GetNext就可获得该列第二行的值。如此下去,如果到了该列的最后一行,那么用GetNext将得到下一列的第一行。如果到了该表的最后一个元素,那么用GetNext将得到按MIB树所得的下一个元素值。显然,在越界的情况下,其Oid的前部分已不同于本列表头的Oid,所以,可以通过得到的Oid值来判断是否越界。 以下为其主要的代码: /*从代理提取某一特定表项,即表中的一列*/ void Read more […]

snmp++中日志输出

Posted by & filed under Uncategorized.

  在snmp++中,使用等级来控制日志是否输出,代码如下:

 

 

【转】对vector等STL标准容器进行排序操作

Posted by & filed under Uncategorized.

  STL几乎封装了所有的数据结构中的算法,从链表到队列,从向量到堆栈,对hash到二叉树,从搜索到排序,从增加到删除……可以说,如果你理解了STL,你会发现你已不用拘泥于算法本身,从而站在巨人的肩膀上去考虑更高级的应用。 排序是最广泛的算法之一,本文详细介绍了STL中不同排序算法的用法和区别。 1 STL提供的Sort 算法 C++之所以得到这么多人的喜欢,是因为它既具有面向对象的概念,又保持了C语言高效的特点。STL 排序算法同样需要保持高效。因此,对于不同的需求,STL提供的不同的函数,不同的函数,实现的算法又不尽相同。 1.1 所有sort算法介绍 所有的sort算法的参数都需要输入一个范围,[begin, Read more […]

【转】C++实现自动为对象添加“属性”访问代码

Posted by & filed under Uncategorized.

  对于c#而言,一个类可以有成员变量、成员函数、和属性,然而在C++中却没有“属性”这一概念。为了达到相同的效果,在C++中一般是采用get_XXX()和set_XXX()两个函数来实现外部对成员变量的访问。这样做的弊端很明显,类的声明中多了很多冗余的代码: private: int m_data; public: int get_data() const; int set_data(int value); 为了定义一个data属性,需要写很多代码,事实上,我们想把上述代码编程一句,那么,这个宏就可以实现: #define AUTO_PROPERTY(type, name) \ private: type m_##name; \ public: type get_##name() const {return m_##name;} \ public: type set_##name(const type &value) \ {return m_##name, m_##name = value;} 然后我们就可以简化代码,增加可读性: class class1 { AUTO_PROPERTY(int, Read more […]

存储 LUN RAID 卷组区别

Posted by & filed under Uncategorized.

LUN是对存储设备而言的,volume是对主机而言的。怎么去理解呢?选择存储设备上的多个硬盘形成一个RAID组,再在RAID组的基础上创建一个或多个LUN(一般创建一个LUN)。许多厂商的存储设备只支持一个RAID组上创一个LUN。此时LUN相对于存储设备是一个逻辑设备。当网络中的主机连接到存储设备时,就可以识别到存储设备上逻辑设备LUN,此时LUN相对于主机来讲就是一个“物理硬盘”,与C盘D盘所在IDC或SCSI硬盘的性属是相同的。在该“物理硬盘”上创建一个或多个分区,再创建文件系统,才可以得到一个VOLUM。此时VOLUME相对于主机是一个逻辑设备。从容量大小方面比较VOLUME,分区、LUN、RAID的关系如下:  VOLUME Read more […]

【转】snmp trap入门

Posted by & filed under Uncategorized.

  转自:http://blog.csdn.net/xuqing3344520/article/details/6294844 SNMP(Simple Network Management Protocol) trap是一种很有用,但是也容易让人难以理解的协议。虽然名字叫做简单网络管理协议,但实际上并不是字面上的意思,尤其是看到.1.3.6.1.2.1.1.1.0这样一串串诡异的数字时候,就会有点让人崩溃。 不管怎么说,现在所有的网络设备的都需要支持SNMP。而且现在还有很多的开源的网络管理系统,所以就有利于我们来学习和理解SNMP。SNMP trap是由被管理的设备主动的向管理服务器发送设备的异常情况,可以看成是管理服务器被动的去接收的过程。所以会有很多的工具会把snmptrap集成到自己的工具中,对网络设备进行监控。 Francois Read more […]

(转)细数存储领域三大主流存储设备

Posted by & filed under Uncategorized.

  转自:http://storage.cnw.com.cn/storage-san-nas/htm2010/20100528_198005_3.shtml 从直接存储到网络存储,数十年间,存储的技术发展一直在延续,却没有太多令人惊喜的突破。网络存储一词已经出现了十多年时间,其内涵十分丰富。市场之所以需要网络存储,主要是因为直接连接磁盘阵列无法进行高效的使用和管理。 对于大多数企业来说,无论其规模大小,都面临各种各样的数据存储挑战:如,数据呈线速增长、需要保证应用性能和可用性、保证业务连续性、需要缩短数据备份,以及怎样应对复杂和难以管理的存储基础设施等等。企业随着规模不断的扩张,上述问题会日渐尖锐。站在企业的立场来看,他们迫切需要适合自身规模、满足其业务需求和预算的企业存储方案。 1、DAS-直接连接存储(Direct Read more […]

(转)SNMP的报文格式以及解析

Posted by & filed under Uncategorized.

转自:http://blog.csdn.net/eric_sunah/article/details/19557683 SNMP的报文格式 SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。     在实际网络传输环境下,SNMP报文的长度取决于其所采用的编码方式。SNMP统一采用BER(Basic Encoding Rule)的编码规则,同时在正式SNMP规范中使用的是ASN.1语法,AbastractSyntax Notation v1,即抽象语法描述语言。这两个概念在后面实践环节再做进一步介绍,这里只要稍微了解一下即可,不妨碍我们对协议本身的分析。这里我们简单解释一下BER编码规则:   Read more […]

CMake之简单工程实践

Posted by & filed under Uncategorized.

  CMake之简单工程实践 转载出处:http://blog.csdn.net/cywosp/article/details/9763261 在实践CMake之前先让我们来看看cmake是什么,下面是从百度百科上摘抄下来的关于cmake的简介: CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性,类似UNIX下的automake。只是 CMake 的组态档取名为 CmakeLists.txt。Cmake 并不直接建构出最终的软件,而是产生标准的建构档(如 Unix 的 Makefile 或 Windows Visual C++ 的 projects/workspaces),然后再依一般的建构方式使用。这使得熟悉某个集成开发环境(IDE)的开发者可以用标准的方式建构他的软件,这种可以使用各平台的原生建构系统的能力是 Read more […]