C++
文章平均质量分 63
丛林隐者
这个作者很懒,什么都没留下…
展开
-
C++共有、私有、保护继承的可见性问题!
在C++里,继承有三中方式,public、protected、private三中继承方式,我们需要记住这3种继承的可见行问题,会有两个可见性的问题,一是子类与父类的可见性,二是对象的可见性(具体应该是对象与父类的成员可见性问题),我们必须记住,三种继承的方式都并不会影响子类成员对父类成员的访问权限,即:父类成员对子类成员的可见性是由父类自身决定的。不同的继承方式只影响子类的对象对父类成员(成...原创 2018-09-14 23:40:19 · 460 阅读 · 0 评论 -
GCC 命令行详解 -L 指定库的路径 -l 指定需连接的库名
1。gcc包含的c/c++编译器gcc,cc,c++,g++,gcc和cc是一样的,c++和g++是一样的,(没有看太明白前面这半句是什么意思:))一般c程序就用gcc编译,c++程序就用g++编译2。gcc的基本用法gcc test.c这样将编译出一个名为a.out的程序gcc test.c -o test这样将编译出一个名为test的程序,-o参数用来指定生成程序的名字3。为什么会出现unde转载 2013-07-30 17:49:35 · 1256 阅读 · 0 评论 -
C语言全局变量定义方法
今天调试系统的时候,需要定义几个全局位变量,定义好后一编译,发现错误一大堆,错误基本都是位变量定义时产生的。以前也定义过全局变量啊,但是先前怎么没错误?瞎折腾了一会最后还是发现问题出在细节上面了。以前只是侥幸没遇到而已。今天做个总结,以后再忘记了就回来直接查一下。 我们都知道定义在函数外部的变量就叫做全局变量,但是通常只有一个C文件和一个H文件的时候那样定义是不会出问题的。一个大的转载 2013-07-20 17:34:40 · 4719 阅读 · 0 评论 -
Openssl建立SSL双向认证连接源码
#include "stdio.h"#include "string.h"#include "openssl/ssl.h"#include "openssl/bio.h"#include "openssl/err.h"#pragma comment(lib, "WS2_32.lib")#pragma comment(lib, "libeay32.lib")#prag转载 2013-07-22 10:25:00 · 916 阅读 · 0 评论 -
VC实现单向认证SSL连接POST数据源码
#include "StdAfx.h" #include CInternetSession *g_ISession; CHttpConnection *g_pHttpConn = NULL; CHttpFile *g_pHttpFile = NULL; const char g_szHeaders[]=_T("Accept: */*\r\nUser-Agen转载 2013-07-22 10:02:40 · 1147 阅读 · 0 评论 -
在android里使用boost c++
注明:以下只对boost c++ 1.47 版本有效,boost c++ 1.52 的filesystem 目前还没有找到编译办法Boost is almost composed of template and header files. Thus, nothing needs to be built at all most of the time… just include the ne转载 2013-06-24 18:11:01 · 3624 阅读 · 0 评论 -
Run c++ program with boost on Android
http://nick.luckygarden.org/Android 很早就支持 NDK, 官方教程上说你可以把 native 代码编译成一个 .so, 在 java 代码中通过 jni 调用这个 .so.现在在做一个 C++ 跨平台的库. 需要支持 Android. 为了在 Android 上测试, 自然可以按照教程里写 java, jni. 但其实也可以抛开 java.转载 2013-06-24 17:47:36 · 1804 阅读 · 0 评论 -
android 编译boost动态库
有个android项目上需要使用到boost标准c++库,Boost库是一个可移植、提供源代码的C++库,作为标准库的后备,是C++标准化进程的发动机之一,所以想将其移植到android系统上进行编译。直接从网上下载 boost1.52版本,然后写makefile。。。进行编译,,碰到无数的编译错误。求助于google网络,终于发现一个好东东:一个通过NDK编译boost代转载 2013-06-24 16:53:51 · 1034 阅读 · 0 评论 -
rpm制作
为什么要打包? 制作 rpm 不仅仅是打包,更可以解决菜单创建、打补钉、完成大量预配置、与其他软件包互动等操作。使用源代码安装要求用户了解基本的编译过程、能够应付各种不能编译的意外、必须自己完成抽象的配置、甚至懂得软件开发,能够自己打补钉,……对非计算机专业的用户而言简直就是天方夜谭。这是把软件开发的最后一步抛给了用户,作为发行版,这是极不负责任的!也是不现实的,除非用 lfs,但那是一本菜谱转载 2013-06-24 15:01:56 · 1067 阅读 · 0 评论 -
关于使用QLibrary如何读取共享库
现在程序讲究个模块化,插件化,所有共享库的读取变的尤其关键,把程序写成各种各样的共享库,那升级的时候只需要重写下某个库,在保证头文件不变的情况下,更新上去,就能完美运行。Qt中读取使用共享库的类叫QLibrary. 使用起来也相当简单,最基本的使用只需要知道4个函数,load(), isLoad(), revovle()和unload().在绝大部分情况下,下面这四个函数就足够完成工作了。下面是个转载 2013-06-21 16:56:46 · 1404 阅读 · 0 评论 -
搭建Qt5.1.0Beta的Android开发环境
在此声明,此过程繁琐,若想用此制作软件产品,还希望大家再等到Qt5.2的稳定版发布。此教程仅适用于Linux操作系统,我使用的版本是Ubuntu13.04。原创文章,反对未声明的引用。原博客地址:http://blog.csdn.net/jiangcaiyang123/article/details/89788151、准备一些必要的开发包按照qt-project里面的指示,转载 2013-06-22 00:49:19 · 2315 阅读 · 3 评论 -
Qt creator 如何设置静态编译
Qt默认的编译方式是动态编译的,但是有时候你编写的程序要发布出去,带很多动态库文件是很繁琐的,此时就需要静态编译你的程序,Qt要实现静态编译必须库文件也是静态编译的,可以用这个命令编译静态库:1.将C:\Qt\2010.05\qt\mkspecs\win32-g++文件中的QMAKE_LFLAGS = -enable-stdcall-fixup -Wl,-enable-auto-impo转载 2013-06-21 23:48:57 · 4562 阅读 · 0 评论 -
Linux下C++程序链接boost库
废话不说,入正题。我使用eclipse来开发c++。 1、编译好boost,编译方法boost目录下有。假设库文件在/usr/local/lib下 2、eclipse中在工程中右键,选属性->C/C++ Build->Setting->GCC C++ Linker。如果使用静态链接,Miscellaneous中增加other objects,选libboostxxx转载 2013-06-20 00:11:47 · 2501 阅读 · 0 评论 -
Linux下如何发布Qt程序
在X11平台下qt程序,首先准备好程序中需要使用的资源,库和插件... 比如你的可运行程序取名叫作panel,那把你的panel,那些libQt*.so.4和libQt*.so.4.6.0(链接和共享库都要)放在同一目录下(也可以不同,只要小小修改下shell文件).plugins就不多说了。 在程序的同目录下,新建一個空文档,取名panel.sh (文件名与程序名同名,扩展名转载 2013-06-20 15:06:14 · 922 阅读 · 0 评论 -
Boost for Mac安装
最近想用一下boost,由于习惯Mac系统,所以就打算用Xcode+boost写点代码。首先得安装boost, 安装port或brew,有了它们,安装就简单了,以前我一篇文章介绍了它们的安装与使用。今天我用的是brew, 打开命令行brew install boost 1.49版本的boost差不多2百多M,安装好后的目录是/usr/local/Cel转载 2013-06-09 09:22:11 · 7654 阅读 · 1 评论 -
本软件包将每个openssl的apps程序做成一个可直接运行调试的VC Console 类型应用程序
// CA.cpp : Defines the entry point for the DLL application. // #define sprintf_s sprintf #include "stdafx.h" #include #include "ca.h" #include #include #in转载 2013-07-23 15:46:42 · 2241 阅读 · 0 评论 -
如何用GCC编译生成动态链接库*.SO文件 动态库
转:如何编译.so动态库问:我源文件为main.c, x.c, y.c, z.c,头文件为x.h,y.h,z.h如何编译成.so动态库?编译器用gcc最好能给出详细参数解释,谢谢答:# 声称动代连接库,假设名称为libtest.sogcc x.c y.c z.c -fPIC -shared -o libtest.so# 将main.c和动态连接库进行连接生成转载 2013-07-26 18:12:49 · 1514 阅读 · 0 评论 -
Linux动态库(.so)搜索路径
众所周知,Linux动态库的默认搜索路径是/lib和/usr/lib。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库,并且该 动 态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函数,以及 该动态库的其它资源了。在Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指转载 2013-08-06 17:54:18 · 753 阅读 · 0 评论 -
C++三种(private,protected,public)继承方式的可见性说明
在C++里,继承有三中方式,public、protected、private三中继承方式,我们需要记住这3种继承的可见行问题,会有两个可见性的问题,一是子类与父类的可见性,二是对象的可见性(具体应该是对象与父类的成员可见性问题),我们必须记住,三种继承的方式都并不会影响子类成员对父类成员的访问权限,即:父类成员对子类成员的可见性是由父类自身决定的,三种继承的方式只会影响实例对象的访问可见性(具体应该原创 2017-06-23 10:15:24 · 1651 阅读 · 0 评论 -
对windows系统中接口的定义都是单一继承的猜想!!!
我们在使用COM设计的时候,发现使用的接口都是单一的继承一个接口,比如: MIDL_INTERFACE("000214E8-0000-0000-C000-000000000046") IShellExtInit : public IUnknown { public: virtual HRESULT STDMETHODCALLTYPE Initia原创 2016-08-04 23:49:39 · 830 阅读 · 0 评论 -
C++中,经常有同名成员函数,一个const形式一个非const形式的解读
C++中,我们经常看到STL有同名成员函数,一个const形式一个非const形式的,而且实现都是完全相同的,为什么呢?我们简单来分析一下,看看下面的代码,来源于C++中STL string class的片段:reference at(size_type _Off){ // subscript mutable sequence with checkingif (this->_Mysi...原创 2016-07-04 21:09:27 · 3867 阅读 · 0 评论 -
C++复杂在哪里?
C++复杂在哪里?鄙人认为有两点:1.C++模板;2.统一的表达方式(操作符重载,拷贝构造)原创 2015-11-13 11:46:16 · 1466 阅读 · 0 评论 -
C++11右值引用本质是什么?
C++11右值引用本质是什么?我认为从编译器层面讲本质就是一种表达方式,主要是为了告诉编译器如何生成代码,从逻辑层面讲,主要是为了解决对象构造内存拷贝开销大的问题。请赐教。原创 2015-11-13 11:34:25 · 1674 阅读 · 0 评论 -
Android NDK支持STL的一些注意事项
Android NDK从r5b版本开始有官方支持的STL了,有一个crystax版本早已经支持。官方的支持有两个版本一个是gnu的,一个是stlport。如果你需要在你的NDK程序中使用STL,那么需要在Application.mk文件中添加一个选项,就是APP_STL := stlport_static。 其中APP_STL的取值有以下四种:system --> 系统默认的最小支持的C++运转载 2014-11-24 18:15:35 · 826 阅读 · 0 评论 -
android ndk中创建线程的注意事项
在android ndk中创建线程是可以的,但必须注意,否则会失败,原创 2014-11-24 18:05:11 · 2017 阅读 · 0 评论 -
windows下编译boost for android
env: windows xp 32 bit mingw official NDK1. 下载源代码 地址是 :http://sourceforge.net/projects/boost/files/boost/1.54.0/ 本文下载的是 boost_1_54_0.7z 2. 解压源代码到任意目录 本问解压后匹配文件转载 2014-11-22 10:00:23 · 2020 阅读 · 0 评论 -
建议在设计C++类时提供默认构造函数,这应该是个好的习惯
建议在设计C++类时提供默认构造函数,主要是为了继承的考虑,否则必须指定一个构造函数,看看下面的代码:class CBase{public:CBase(string param){m_param = param; }private:string m_param;};class CSon: public CBase{public:CSon(){原创 2013-12-21 14:25:48 · 1008 阅读 · 0 评论 -
网络游戏服务器构架设计(三):刀剑Online - 总控服务器、场景服务器
上一篇《网络游戏服务器构架设计(二)》介绍了刀剑Online的连接负载服务器CLS,博友提出质疑“说得不够详细,比如你怎么,场景服务器怎么才算一个场景服务器,场景服务器切换怎么处理不断线后连接另一个场景的,还有很多细节问题没有说到”,本篇就来介绍游戏服务器最为核心的部分:游戏逻辑服务器,同时也回答了这位博友的问题。PS:本篇的文章结构主要分两个部分,前半部分(2.2节)介绍刀剑Online转载 2013-12-13 11:35:10 · 1295 阅读 · 0 评论 -
网狐棋牌游戏平台服务器架构设计分析
基本设计概念和处理流程 调用模型模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。示意图: 基于事件驱动的数据处理模型在系统功能设计中,针转载 2013-12-13 10:55:58 · 1872 阅读 · 0 评论 -
C++中的友元函数的总结
1.友元函数的简单介绍1.1为什么要使用友元函数在实现类之间数据共享时,减少系统开销,提高效率。如果类A中的函数要访问类B中的成员(例如:智能指针类的实现),那么类A中该函数要是类B的友元函数。具体来说:为了使其他类的成员函数直接访问该类的私有变量。即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数。实际上具体大概有下面两种情况需要使用友元原创 2013-12-04 21:13:13 · 636 阅读 · 0 评论 -
C++和object pascal构造函数和析构函数的差异
C++中,子类构造的时候会自动调用父类的构造函数,子类释放的时候也会自动调用父类的析构函数。建议父类的析构函数声明为virtual,以便在多态的情况下,正确释放。object pascal中,子类的构造函数调用的时候,并不会自动调用父类的构造,需要添加inherited来显式的调用父类的构造函数,子类调用析构函数也一样,需要显式的调用父类的析构函数,这样的优势在于,父类的析构函数调用可以由用户原创 2013-11-20 18:10:32 · 1078 阅读 · 0 评论 -
浅谈C++中内存泄漏的检测
首先我们需要知道程序有没有内存泄露,然后定位到底是哪行代码出现内存泄露了,这样才能将其修复。最简单的方法当然是借助于专业的检测工具,比较有名如BoundsCheck,功能非常强大,相信做C++开发的人都离不开它。此外就是不使用任何工具,而是自己来实现对内存泄露的监控,分如下两种情况:一. 在 MFC 中检测内存泄漏假如是用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。我们转载 2013-08-06 17:55:12 · 564 阅读 · 0 评论 -
JAVA中调用C语言接口
写一个Java类,在这个类中包含了需要调用的本地方法的描述。//WinMsgBox.javapackage edu.netcom.jni;public class WinMsgBox {static{System.loadLibrary("WinMsgDll"); // (1)}public native void showMsgBox(String str);转载 2013-06-17 11:16:49 · 14361 阅读 · 1 评论 -
linxu下隐式调用so库
最近,一直在编写跨平台的接口库,库都编写成了linux下的so库文件,涉及到了对so的调用问题,在windows下,有对动态链接库的两种方式加载,一是显示加载,即:手动load库,二是隐式加载库,即:只需要头文件和lib文件,头文件在编译过程需要,lib文件在链接过程需要,即可在程序中直接调用库,而不需要手动加载了,而在linux下,显示加载的方式和window是一样的,而linux下隐式加载需要原创 2013-06-08 15:17:30 · 2793 阅读 · 0 评论 -
COM+试水
今天对COM+进行了实际的测试,简单说,COM+本质也是COM,COM+引入了一种方式,也就是说可以对COM的虚对象进行子类化,这个有点像面向对象中从父类(纯虚类)中派生了一个子类,通过调用父类的虚方法,进而调用子类的方法。这个思想更切合面向对象的设计思想了。不过,COM+的安装确实复杂,不像COM那么简单,COM+在系统中是做为一个服务组件在运行,要安装COM+的组件必须要在系统组件服务的COM原创 2013-03-30 21:56:44 · 937 阅读 · 0 评论 -
使用VS2008编译驱动程序
一.用VS2008创建一个Win32控制台应用程序,在“附加选项”处勾选“空项目”二.将编写好的源代码文件导入项目中三.修改VS2008设置,添加支持驱动程序编译链接的头文件和库文件 在Include目录中添加: D:\软件\WINDDK\2600\inc\w2k D:\软件\WINDDK\2600\inc\ddk\w2k D转载 2013-03-30 21:49:34 · 1095 阅读 · 0 评论 -
C++与Pascal
C++代码,每一句都交代的很清楚,复杂的语句也是用操作符重载的方式来说明,C++特点就是不会隐藏太多的细节,但是从某种程度上说你的代码复杂度就增加了,而Pascal对某些操作可以用一种抽象的,编译器允许的方式表达,比如对COM对象的后期绑定的表达方式,可以直接用(OLEVariant.方法)的表达方式来引用COM对象的接口,这种表示方式对用户来讲使用更简单更方便了,但是从语法的角度讲,编译器隐藏了原创 2013-03-30 21:43:17 · 2153 阅读 · 0 评论 -
谨慎驱动开发
驱动开发最难的我想不是编写代码,而是代码调试,一个简单的空指针访问就会导致直接蓝屏,因为驱动调试本身比较麻烦,所以尽可能的多打印调试信息,在每编写一行C代码的时候,都需要非常谨慎,否则随着代码的增多,就会更难定位到问题,今天遇到3次蓝屏都是因为对象没有初始化,内核和系统紧密联系在一起,所以要编写稳定的代码,需备加小心,能静心,临危不乱。优秀的设计者是对自己有信心。原创 2013-03-30 21:38:23 · 588 阅读 · 0 评论 -
SFTP协议
SCP协议本身打开SSH通道时指定的是scp命令,而是用SFTP时指定的sftp。以下是一些具体的介绍,详细内容需要参考对应的RFC文件。下面是目前整理的使用的一份:1) 协议中数据包格式通过安全通道传输的所有包的格式如下: uint32 length byte type uint3转载 2013-03-30 21:33:05 · 1148 阅读 · 0 评论 -
VS2005下wxWidgets-2.8.x环境的搭建
wxWidgets的下载、安装和编译1. 去http://www.wxwidgets.org/downloads/下载一个wxMSW版本的wxWidgets。2. 运行安装文件。在安装好后设置环境变量WXWIN,指向wxWidgets的安装目录。因为安装过程仅仅是把文件拷贝到指定的目录,所以还需要对wxWidgets进行编译。3. 进入$(WXWIN)\build\msw目录,用VS2转载 2013-03-30 21:29:32 · 620 阅读 · 0 评论