- 博客(43)
- 资源 (7)
- 收藏
- 关注
原创 用MinGW的gcc编译com组件
因为特殊原因需要用gcc编译com组件还不是vc首先代码得写纯C++的,不用借用ATL和MFC,这个网上蛮多的我们用到的是需要idl文件的,借用VC的MIDL得到XX_i.c XX_p.c XX.h文件还有tlb文件主要是tlb文件,没有tlb文件编译出来的com找到COM方法把tlb加到XX.rc资源文件里,用MinGW下的windres把资源编入XX.o文件windres resource....
2018-06-06 17:45:35 1816 1
原创 关于纯C++编写的com组件在vb.net等其他语言引用出错问题
纯C++编写com组件网上的例子蛮多大家可以自选搜索,写出来的com可以注册成功VC调用也没问题,但是用vb.net去调用时引用却不行会有以下错误这是因为没有把TypeLib写入注册表,添加以下写注册表代码就可以了HRESULT RegisterTypeLibServer(const CLSID& clsid, const TCHAR *szVersion, const TCHAR *sz...
2018-06-06 17:34:14 503
转载 golang emoji表情处理
package util import ( "regexp" "strconv" "strings") //表情解码func UnicodeEmojiDecode(s string) string { //emoji表情的数据表达式 re := regexp.MustCompile("\\[[\\\\u0-9a-zA-Z]+\\]") /
2017-09-01 15:04:43 5612 1
原创 srand和rand的使用
只使用rand会按一定规律生成一样的随机数,srand函数是给rand提供种子。每次要生成不同的随机数要用srand提供不同的种子,一般用srand((unsigned)time(NULL));以时间为种子可以保证每次不同。rand生成的随机数是0~RAND_MAX之间。如果要生成几个0~99之间的随机数可以按下面这样:#include #include void
2017-02-01 21:29:25 645
原创 golang调用javascript文件里的函数
这里要用到otto---Go语言实现的JavaScript 解释器(github.com/robertkrimen/otto)假设plugins.js里的内容有:function addnum(a, b) { return a + add5(b)}function add5(a) { return a + 5}要调用addnum函数,golang内容为:
2016-12-13 22:19:34 8009
原创 C++获取网关(linux)
这里只讨论最简单与直接的方法,和route命令一样,从/proc/net/route读取,代码如下:bool GetIPV4Gateway(const char * pNICName, char *pGateway, unsigned long len){ char buffer[200] = { 0 }; unsigned long bufLen = sizeof(buffer);
2016-11-02 16:14:48 4983
原创 文件关闭后马上再打开另一个文件两个句柄会一样
for(int i = 0; i < 5; i++){ FILE *pF = fopen("123.txt", "wb"); printf("%x\n", pF); fclose(pF); pF = NULL;}按这代码测试每次都是一样的句柄
2016-09-29 18:09:06 1267 1
转载 websocket
你可以把 WebSocket 看成是 HTTP 协议为了支持长连接所打的一个大补丁,它和 HTTP 有一些共性,是为了解决 HTTP 本身无法解决的某些问题而做出的一个改良设计。在以前 HTTP 协议中所谓的 keep-alive connection 是指在一次 TCP 连接中完成多个 HTTP 请求,但是对每个请求仍然要单独发 header;所谓的 polling 是指从客户端(一般就是浏览器
2016-08-02 20:56:19 363
原创 Execution failed for task ':callbacktest:clean'
做NDK时出现Execution failed for task ':callbacktest:clean'其实是自己在Terminal里操作到相关目录导致的清理不了,退回顶层就可以了AS里ndk出现java.lang.UnsupportedClassVersionError:时要去module setting,把Build Tools Version改一下版本。
2016-08-01 17:06:02 409
原创 panic: reflect: reflect.Value.SetUint using value obtained using unexported field(go语言)
go语言中在用binary.Read(),把二进制映射为结构体时,如果出现panic: reflect: reflect.Value.SetUint using value obtained using unexported field类似的错误,是要映射的结构体成员没有大写造成的,小写是私有,大写公有的才可以被访问到
2016-07-28 20:32:55 2499
原创 android
做NDK时出现Execution failed for task ':callbacktest:clean'其实是自己在Terminal里操作到相关目录导致的清理不了,退回顶层就可以了
2016-07-01 11:38:58 193
原创 CentOs下用Qt Creator出现找不到GL/gl.h问题
我是直接下载qt-opensource-linux-x64-5.5.1.run,修改权限直接运行安装。然后编项目时出现找不到GL/gl.h问题是少装了gl库用命令yum install mesa-libGL-devel mesa-libGLU-devel (2个opengl核心库)就可以了也可以再安装yum install freeglut-devel (OpenGL Util
2016-06-02 18:33:08 9699
原创 linux添加开机自动启动程序
1.最简单的办法是修改/etc/rc.d/rc.local脚本,在文件末尾添加所有执行的脚本,/etc/rc.d/rc.local脚本程序是在引导过程的最后一步被执行的。但是有些系统中找不到这个脚本,我们可以用第二种方法。2.在/etc/rc.d/init.d目录下(有些是在/etc/init.d目录下,ls -l看/etc/rc1.d下文件的链接是哪个目录,没有/etc/rc1.d时应该
2016-05-25 10:03:10 1134
转载 OGG音频格式分析
一. OGG音频格式概述Ogg是一个自由且开放标准的容器格式,由Xiph.Org基金会所维护。Ogg格式并不受到软件专利的限制,并设计用于有效率地流媒体和处理高品质的数字多媒体。“Ogg”意指一种文件格式,可以纳入各式各样自由和开放源代码的编解码器,包含音效、视频、文字(像字幕)与元数据的处理。在Ogg的多媒体框架下,Theora提供有损的图像层面,而通常用音乐导向的Vorbi
2016-05-17 20:48:26 11761
原创 qt creator编译opus库
把下载来的Opus源代码全都加入到项目中除了arm、tests及mips目录然后在.pro文件里加入INCLUDEPATH += include celt silk silk/float silk/fixed .DEFINES += HAVE_CONFIG_HQMAKE_CFLAGS_RELEASE = -O2 -fvisibility=hidden -W -Wall
2016-05-12 17:05:08 1078 1
原创 opus编译库到arm上面用
一、可以到https://opus-codec.org/下载源码进入到目录% ./configure CFLAGS="-Os" --enable-fixed-point --enable-intrinsics --host=arm-linux// configure后面的参数是指定优化选项,和编译器% make% sudo make install二、可以用git下载源码%
2016-05-12 15:12:12 4411 4
转载 linux64位shellcode代码注入
【测试环境】 CentOS 5.4 (Final)x86_64 Linux version 2.6.18-164.el5. x86_64 GCC version 4.4.2 20080704【汇编编译环境】 CentOS 7 x86_64 Linux 3.10.0-229.7.2.el7.x86_64 NASM 2.10.07 x86_64【A程序:counter.
2016-03-30 11:45:45 1797 1
原创 linux系统调用64位汇编与32位汇编不同及兼容
一、不同1.系统调用号不同。比如x86中sys_write是4,sys_exit是1;而x86_64中sys_write是1, sys_exit是60。linux系统调用号实际上定义在/usr/include/asm/unistd_32.h和/usr/include/asm/unistd_64.h中。2.系统调用所使用的寄存器不同,x86_64中使用与eax对应的rax传递系统调用号,但是
2016-03-30 11:34:14 2663
原创 Missing separate debuginfos
gdb在调试程序时候提示 Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.107.el6.i686然后运行debuginfo-install glibc-2.12-1.107.el6.i686 ,Could not find debuginfo for main pkg: glibc-2.12-1.107.e
2016-03-22 09:44:39 807
原创 virtualbox下给centos共享文件
安装增强软件,可能出现Building the main Guest Additions module [失败]先安装下yum install kernel,再安装yum install kernel-devel,mkdir /mnt/sharecode再mount -t vboxsf sharecode /mnt/sharecode
2016-03-09 18:03:35 315
原创 Qt对话框QDialog的返回值
Constant ValueQDialog::Accepted 1QDialog::Rejected 0
2016-02-23 19:01:46 18032 1
原创 AMR解码编程(C++直接用opencore-amr-0.1.3库)
先定义每种帧的大小数组const int sizes[] = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 6, 5, 5, 0, 0, 0, 0 };初始化解码器void *m_pAmr = Decoder_Interface_init();判断文件头,去掉文件头,读取第一个帧头,以第一个帧头为标准,后面用于判断坏帧if
2016-02-18 19:04:06 1985
原创 AMR解码编程(C++直接用opencore-amr-0.1.3库)
先定义每种帧的大小数组const int sizes[] = { 12, 13, 15, 17, 19, 20, 26, 31, 5, 6, 5, 5, 0, 0, 0, 0 };初始化解码器void *m_pAmr = Decoder_Interface_init();判断文件头,去掉文件头,读取第一个帧头,以第一个帧头为标准,后面用于判断坏帧if (0 == mem
2016-02-18 18:50:17 3318
转载 AMR音频结构
编码方式AMR有多种编码方式,每种编码方式的采样频率不同: 规格比特率(kbps)音频帧大小(字节)帧头(字节)FT0AMR 4.75 1304 0000010000001AMR 5.15
2016-02-18 18:41:54 706
原创 Qt实现类似sendmessage和postmessage发送自定义消息
在用MFC中时常会用到sendmessage和postmessage特别是其他线程对GUI线程操作时,但是在QT中没有直接可用的相应函数。QT中要达到相同的效果可以用信号和槽在slots下自定义槽private slots: void OnRevertPhone(unsigned int ret, QString phone);signals下自定义信号signals:
2016-02-17 19:29:17 8819
原创 Qt Creator 在windows下发布程序
首先要先编成release,到build-XXXX-Release下的release目录可以得到release生成的exe直接运行会提示计算机中丢失Qt5Core.dll,到qt安装目录下的mingw492_32(我安装的是mingw,安装其他到对应目录找)中找到bin目录,里面有这个dll,拷贝到exe的目录下再运行还会提示丢失dll,把所以dll都添加好后,打包到其他电脑上运行。在没有安装qt
2016-01-25 18:24:23 1944
原创 利用waveIn完成简单录音(录成wav)
设置采集音频格式 WAVEFORMATEX waveform; //采集音频的格式,结构体 waveform.wFormatTag = WAVE_FORMAT_PCM;//声音格式为PCM waveform.nSamplesPerSec = 8000;//采样率,16000次/秒 waveform.wBitsPerSample = 16;//采样比特,16
2016-01-21 20:56:33 9407 3
原创 QTableView的应用(Qss美化,加checkbox)
利用数据模型添加表头QStandardItemModel *m_pModel;m_pModel = new QStandardItemModel(ui->tableView_log);//m_pModel->setHorizontalHeaderLabels(QStringList()<<QStringLiteral("项目名")<<QStringLiteral("信息"));m_pMod
2016-01-21 20:33:57 16003 6
原创 实时在线音频延时的处理(借用speex)
实际项目中出现实时在线音频播放会有累加延时的问题,越久延时越长。经过各方面检查发现是设备发送音频数据频率不稳定产生的:比如本来应该是每秒5包音频包的数据过来的,但是某一秒设备没把数据及时发过来,造成这一秒内没数据播放,但是下秒又多了数据,但是播放速度是固定的,所以相当于延时了一秒,这种情况出现多了延时就会变长。后来分析了下网络出现这种情况比较常见,特别这个项目是用3G网络可能性还是蛮大
2016-01-19 21:01:41 2800
转载 speex前置处理
1.简介语音在采集和传输过程中,由于语音源的差异、信道的衰减、噪声的干扰以及远近效应,导致信号幅度相差很大。所有在语音处理之前我们需要对语音数据进行前置处理,包括预处理(AGC、VAD、回音消除)、重采样和噪声抑制。所有的代码都是基于speex开源库,具体内容可以参考http://speex.org/。2.接口说明预处理模块包括自动增益控制、静音
2016-01-15 14:05:47 2126
原创 “无法解析的外部符号 _mysql_num_rows@4,该符号在函数”问题
先看在链接器里的输入那一栏有没有添加libmysql.lib,没有要添加。链接器里的常规里的附加库目录,路径有没有添加对,一般是C:\Program Files\MySQL\MySQL Server 5.6\lib还是不行,可能是位数的原因,我系统是64位的,安装的mysql也是64位的,但是工程是32位的,所以可以改安装32位的mysql或把工程改为64位。工程改为64位:解决方案属
2015-11-06 10:47:10 2711 1
原创 centos下yum的一些用法
centos支持yum安装,安装前先要切换到root用户,用命令su,然后输入密码。安装gcc用命令yum install gcc安装g++要用命令yum install gcc-c++而不是yum install g++
2015-10-27 15:27:19 278
原创 自增自减与左值
以自增为例,(i++)不能做左值而(++i)可以,看下实现://前缀形式,++i int &int::operator++() { *this+=1; return *this; } //后缀形式,如i++,由于返回的是副本,所以设定了const int,因为给oldvalue赋值是危险的,函数出栈动作结束后,oldvalue就消失了,所以不能做左值。
2015-09-27 18:01:03 833
原创 lua几个易与其他语言(特别C++)混淆的地方
1. lua认为false和nil为假,其他值都为真,所以0和空串是真。2. ==和~=比较两个值,如果两个值类型不同,Lua认为两者不同;nil只和自己相等;Lua通过引用比较tables、userdata、functions。也就是说当且仅当两者表示同一个对象时相等。3. a and b -- 如果a为false,则返回a,否则返回b a or b --
2015-09-27 11:10:46 875
原创 svn常用的几个命令
svn客户端checkout一个目录下来:svn checkout https://127.0.0.1:8443/svn/RJLMeng/trunk/dbs dbs下载更新:svn update查看修改可上传文件:svn st上传修改:svn commit client/ -m "测试代码客户端"client是一个指定文件夹,为空表示上传当前目录下的全部修改,-
2015-09-16 12:22:49 295
原创 js中Math的几个函数
1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分(返回小于等于n的最大整数)。3.Math.round(num); 参数num为一个数值,函数结果为num四舍五入后的整数。4.Math.ceil(n); 返回大于等于n的最小整数。5.Math.ceil(Mat
2015-07-29 14:22:38 1142
原创 node.js中的process.nextTick()和setImmediate()
process.nextTick()和setImmediate()在node.js中都是将回调函数延时执行。跟setTimeout(function(){}, 0);类似,但性能不一样,setTimeout定时器是采用红黑树,process.nextTick()是用数组,setImmediate()是用链表。先看看process.nextTick()的代码process.nextTick(
2015-07-23 15:41:14 1282
转载 MySQL错误码
服务器错误信息来自下述源文件: 错误消息信息列在share/errmsg.txt文件中。“%d”和“%s”分别代表编号和字符串,显示时,它们将被消息值取代。 错误值列在share/errmsg.txt文件中,用于生成include/mysqld_error.h和include/mysqld_ername.h MySQL源文件中的定义。SQLSTATE值列在share/errmsg.txt文件
2015-07-23 09:55:20 821
转载 MySQL的timeout那点事
转载网址: http://www.penglixun.com/tech/database/mysql_timeout.html因为最近遇到一些超时的问题,正好就把所有的timeout参数都理一遍,首先数据库里查一下看有哪些超时:root@localhost : test 12:55:50>show global variables like "%ti
2015-07-09 15:07:47 392
原创 gdb调试core文件
gdb wbxgs_crash[程序名] core.5797[core文件名](gdb)bt#0 ........#1 .......(gdb)info threads [查看线程]21 process ......20 process ....(gdb)thread 21 [转入线程21](gdb)bt#0 ........#1 .......(gdb
2015-07-08 22:21:53 366
DirectShow开发指南及源码.part4(共四卷)
2010-05-07
DirectShow开发指南及源码.part3(共四卷)
2010-05-07
DirectShow开发指南及源码.part2(共四卷)
2010-05-07
DirectShow开发指南及源码.part1(共四卷)
2010-05-07
计算机组成与设计部分习题答案(王诚版)
2008-10-13
航空客运订票系统(C++)
2008-09-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人