C++
文章平均质量分 63
ibingow
这个作者很懒,什么都没留下…
展开
-
不改代码不链接库调用c接口
其实就是用dlopen之类的解析符号来调用。但是其实我们可以做得更多,因为这些动作都是比较机械话的。于是我搞了个小项目 https://github.com/wang-bin/dllapi为什么不用链接? 1. 开发环境中可能没有那个库,但是希望能在有这个库的运行环境上能工作。2. 不依赖运行时库的版本为什么不手工写解析符号代码? 比如xbmc是为每个库写个类,然后原创 2014-03-23 16:41:05 · 2482 阅读 · 0 评论 -
js调用gecko c++代码
在移植gecko的时候发现一些问题,比如gecko连alert对话框这种基本的控件都没有默认实现,包括b2g,在firefox os(那个ui叫gaia)中是纯粹地用html实现的。起初觉得把gaia的的代码,拷过来点就是了,后来发现gaia写得有点复杂,会产生很多依赖,还不如直接用native的控件来实现。做法是参考android的firefox,用js处理部分逻辑,gui相关部分用java,就原创 2012-11-16 17:55:28 · 3809 阅读 · 2 评论 -
gecko中的js扩展
1 创建js对象对应的idl文件假设要扩展一个hiGecko对象,那么先创建一个idl文件,命名为nsIDOMHiGecko.idl,它的内容如下#include "nsISupports.idl" [scriptable, uuid(9285aaa6-19fd-4fdb-8621-916f856c024f)]interface nsIDOMHiGecko : nsISupports原创 2012-11-09 19:02:06 · 3702 阅读 · 0 评论 -
Qxt中的d-pointer技术及改进
Qxt是一个Qt的扩展库。其中也用到了d-pointer技术,但是与Qt的区别很大,比起Qt有点不足之处。这里我先简单看下它的实现,然后吸取Qt中的优点进行改进。(最新代码在 https://github.com/wang-bin/d-pointer )之前写过一篇关于d-pointer的文章 http://blog.csdn.net/ibingow/article/details/75221原创 2012-11-11 20:36:00 · 4537 阅读 · 1 评论 -
基于FFmpeg和Qt的播放器 QtAV库
参与项目开发: https://github.com/wang-bin/QtAV下载编译好的文件等:https://sourceforge.net/projects/qtavwin下编译好的可执行文件及编译所需的文件在这:https://sourceforge.net/projects/qtavwin下编译要用到的库如ffmpeg,portaudio可以在https://sourcef原创 2012-11-03 23:09:06 · 31425 阅读 · 89 评论 -
提取了VS2012的编译器
编译环境下载:http://download.csdn.net/detail/ibingow/5080903或者http://qtbuild.googlecode.com/files/vs2012-x86.7zvs2012 redist: http://www.microsoft.com/en-us/download/details.aspx?id=30679原创 2013-02-22 23:09:53 · 11361 阅读 · 8 评论 -
在Qt Widget中使用QPainter之外的引擎进行绘图
最近在给自己的播放器(https://github.com/wang-bin/QtAV)加写非QPainter的渲染方式,解决了一些以前没碰到过的问题。 在QWidget中使用其他方式绘图,比如direct2d,gdi等(我刚学的) 1. 重载paintEvent,里面加入自己的绘图代码。这个大家都想得到 2. 重载QWidget::paintEngine() 返回0原创 2013-02-22 22:53:02 · 11832 阅读 · 1 评论 -
iPad上搭建c,c++,objc开发环境
注:sdk下载 http://code.google.com/p/ios-devel/downloads/list已在iPad2上成功搭好开发环境,测试了几个程序没问题。C环境首先安装libgcc,其它包都依赖它wget http://apt.saurik.com/debs/libgcc_4.2-20080410-1-6_iphoneos-arm.debdpkg原创 2012-02-11 00:38:28 · 15838 阅读 · 0 评论 -
FBReader代码结构(1)--ui插件系统
关于 FBReader 主页: http://www.fbreader.org/ FBReader 是很优秀的跨平台电子书阅读器,它原为 Sharp Zaurus 而开发,后来可在 Nokia 770/N800、Motorola EZX系列、Maemo、Linux、Windows 、android等上面运行(iOS上也有移植,但是部分代码还没放出貌似)。FBReader 支持原创 2012-08-17 00:44:10 · 6497 阅读 · 0 评论 -
参加了2012 intel软件大会
很不错的大会,学到了蛮多东西。以前几乎没用过intel的开发工具,只接触过一点ipp。今天听了会上的介绍后发现这些工具很强大,用起来也很方便,用intel的编译器编译就能提升性能,Cilk Plus和TBB矢量并行化(不太理解)和线程并行化,使用的时候只要改很少的代码,还有许多牛逼的工具。发了张光盘,写着Intel Parallel Studio XE,拿到时很是兴奋,回去后马上插入打算试试会上讲原创 2012-03-16 21:17:02 · 961 阅读 · 0 评论 -
qt文字光晕效果的一种实现
直接把我qtcn的文章贴过来了。 目前只实现了文字外面有单一颜色轮廓的效果,那种渐变发光的效果还不知道如何实现。QStringList text_lines = ......;QString text = weather_lines.join("n"); 计算绘制所有文字所需的尺寸 QFont f; f.setFamily(mFontName原创 2012-02-19 22:03:42 · 7779 阅读 · 1 评论 -
给wince编译7zip的方法(作者Pavlov提供)
之前需要移植7zip到wince平台,但是这么大的一个工程真不知道怎么编译。在sourceforge上抱着试试看的心态提了这个问题,没想到7zip的作者Pavlov很快就给我了回复,提供了三个批处理,很顺利地编译通过了。真的非常感谢,Pavlov真是热心。 我对批处理稍微做了点修改,尽量使用系统里已有的环境变量。 一共三个文件,arm5_.bat, compile.bat, compi原创 2012-02-16 13:07:18 · 1967 阅读 · 1 评论 -
对Boost::any的一个补充
Boost::any可以存取任意类型,是用模板实现的,不过它设计得非常巧妙,其本身不是个模板,而是用一个模板类的成员来进行数据存储的,这使得我们可以写出这样的代码:boost::any x((std::string(“Hello Cruel World!”));x = 123;x = 3.1416f;….但是如何把数据转变回来呢?Boost::any提供了几个非成员模原创 2011-12-28 23:11:35 · 813 阅读 · 0 评论 -
libexif的使用
wiki上有EXIF的介绍,不抄了 http://zh.wikipedia.org/wiki/EXIF分析exif数据的c库有libexif, c++库有exiv2。exiv2比libexif支持更多格式,最近更新也比较活跃。这里简单介绍下如何使用libexiflibexif主要的数据结构有ExifData, ExifContent, ExifEntryExifData包含了所有的原创 2012-07-07 14:31:38 · 13172 阅读 · 4 评论 -
webkit支持跨域的方法
修改文件WebCore/page/SecurityOrigin.cpp中的bool SecurityOrigin::canRequest(const KURL& url) const让它返回true网上有人说让bool SecurityOrigin::canAccess(const SecurityOrigin* other) const返回true,试了下不行另外,原创 2012-05-29 16:44:43 · 5640 阅读 · 0 评论 -
基于stringstream的类型转换封装
用法:lexical::cast_to::from(FromValue);如double a = lexical::cast_to::from("3.1416");特点:接口一目了然。能进行基本类型间的转换。实现:使用stringstream有一个问题就是如果源类型和目标类型都是string,即stringstream > out中的in和out都是st原创 2012-05-16 18:52:00 · 2464 阅读 · 0 评论 -
d-pointer
简介d-ponter由Trolltech公司(Qt)的Arnt Gulbrandsen命名,他首次将此技术引入到Qt,使Qt成为第一个具有二进制兼容性的C++gui库。这是一个增加私有数据成员而不破坏二进制兼容性的非常棒的办法。d-pointer技术把私有成员变量都保存在一个私有类的指针中大致结构如下widget.h// Forward-declar原创 2012-04-29 12:28:54 · 2767 阅读 · 1 评论 -
类型名字的获取及其应用(g++ only)
实现我们希望给定一个类型通过一个函数能返回该类型的字符串形式,比如给定char返回"char"。这里类型是作为模板参数。实现方法利用的是g++的扩展宏__RETTY_FUNCTION__,该宏是其所在函数的完整函数名的一个字符串,包括函数类型、返回值、所属类,对于模板函数,还包含模板参数的信息。比如templatevoid PrintFunction(){ printf("原创 2012-04-30 16:53:44 · 2163 阅读 · 0 评论 -
WebKit中的智能指针
前几天看了下webkit里的几种常用的智能指针代码,小结一下RefCounted:提供引用计数器功能。使用时继承之class Foo : public RefCounted为了更为方便安全地使用引用计数功能,webkit提供了RefPtr。ThreadSafeShared多线程版本的引用计数RefPtr / PassRefPtr保存支持引用计数的原创 2012-04-17 13:49:40 · 1632 阅读 · 0 评论 -
windows程序崩溃对话框和异常处理
经常碰到某些程序崩溃时弹出带红色叉叉的错误窗口或者是叫你选择调试或关闭的窗口,很碍眼。不过平时也没去理它,点掉就好。 今天客户反映我们的程序崩溃后就起不来了,其实我们为了方便无人化管理,做了一个守护进程。如果程序异常退出就会重启那个程序,这在linux下没问题,程序崩溃了就直接退出返回非零值,但是window就bug了,搞不好就给你弹出个错误对话框,你不点掉其实程序就没退出,守护原创 2011-12-26 22:34:28 · 14710 阅读 · 0 评论