- 博客(195)
- 资源 (20)
- 问答 (1)
- 收藏
- 关注
原创 SDL多窗口多线程渲染技术解析
尽管在特定环境(如Linux + 特定驱动组合)下多线程Present可能暂时正常工作,但这种行为违背了SDL的跨平台设计哲学,可能在未来更新或更换硬件时引发难以调试的问题。对于高性能多线程渲染需求,更安全的做法是将**渲染命令录制与Present提交分离**,**规避窗口系统协议和图形驱动的线程安全隐患**,通过主线程协调实现帧同步。建议仅在以下场景使用此架构:- 纯 Linux 部署环境- 窗口数量较少(≤8)- 无需跨窗口资源共享对于跨平台或大规模窗口场景,尤其生产环境下,仍建议采用主
2025-03-30 20:59:02
258
原创 cppcheck使用
cppcheck是一个静态代码检查工具,支持c, c++ 代码;作为编译器的一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。执行的检查包括:自动变量检查数组的边界检查class类检查过期的函数,废弃函数调用检查异常内存使用,释放检查内存泄漏检查,主要是通过内存引用指针异常STL 函数使用检查代码格式错误,以及性能因素检查。
2023-07-27 23:55:04
617
原创 protobuf踩过的坑
protobuf踩过的坑proto文件生成C++枚举没有那么干脆,不像C++原生枚举定义简洁变量命令不能包含_下划线- 开发者指南[翻译] ProtoBuf 官方文档(二)- 语法指引(proto2)[翻译] ProtoBuf 官方文档(三)- 语法指引(proto3)[翻译] ProtoBuf...
2019-04-20 10:04:59
3075
1
转载 C++/CLI问题集锦 FAQ
C++/CLI中的const literal initonly 友元C++/CLI中的constVisual C++并不允许在const对象上调用成员函数,除非该成员函数也被声明为const。 C++/CLI托管代码中,无法把任何类型的函数声明为const;但可以把一个对象声明为const;然而由于无法编写const函数,这种const对象也几乎没有办法进行操作。 ...
2019-01-05 16:34:52
712
转载 Effiective Debugging——通用的工具和技术
用Unix命令行工具对调试数据进行分析用Unix命令来获取、帅选、处理并汇总文本记录,从而实现对调试数据的分析 把Unix命令用管道连接起来,可以迅速完成很多复杂的分析任务掌握命令行工具的各种选项及习惯用法通过grep命令的各种选项对搜索的结果进行逐步帅选 对程序的标准错误端进行重定向,以便于分析 用tail-f命令来监控内容持续增加的日志文件用编辑器对调试程序时所需的数据进行浏...
2018-08-28 18:36:55
200
转载 Effective Debugging——通用的方法与做法
相信自己能够把问题调试好确信问题是可以追查并解决的 给调试工作留出足够的时间 安排好工作环境,是自己不受干扰 遇到难题的时候可以先睡一觉 不要彻底放弃 投入精力去学习环境、工具及知识高效地重现程序中的问题如果能够准确重现程序中的问题,那么我们的调试过程就得以简化 创建一个简短且自足的范例,以便重现程序中的问题 设法创建一套可以制作副本的执行环境 采用版本控制系统给特定的软...
2018-07-17 19:35:19
415
转载 Effective Debugging——宏观策略
通过事务追踪系统处理所有问题通过事务追踪系统处理所有问题 确保每项事务都能够以短小、自足而又正确的范例,精确地描述出该问题地重现方式 对事务进行分类,并根据每项事务的优先级与严重程度来安排工作。 通过事务追踪系统来记录进度。 在网上确切的查询你所遇到的问题,以寻找解决问题的灵感 把错误消息打上双引号,以便在网上准确地进行搜索 认真查看StackExchange系列网...
2018-06-29 15:40:06
365
原创 lua与C++交互
luaplusLuaPlus是Lua的C++增强,也就是说,LuaPlus本身就是在Lua的源码上进行增强得来的。用它与C++进行合作,是比较好的一个选择。使用LuaPlus在C++项目中集成Lua脚本 luaJITluajit ffiluajit ffi 小结 nuaLuaBind LuaBind 是一个帮助你绑定C++和Lua的库.她有能力暴露 C++ 函数和类到 Lua . 她也有能力支持
2017-10-18 17:18:41
792
转载 SQLite加密
用开源的wxsqlite31、到SQLite官网http://www.sqlite.org/下载sqlite-amalgamation-XXXXXX.zip,它已经包含了所有的源文件,也不需要另外的辅助工具了,解压到某一目录,如Sqlite3。 2、如果你下的sqlite-amalgamation-XXXXXX.zip没有makefile,那就自己做一个project吧,在VS2008里新建一个空
2017-05-26 19:51:42
687
转载 C++模板的问题集锦
关于C++模板的链接错误问题前几天写了一个模版,按以前的习惯,把定义写在头文件中, 把实现写在cpp文件中。结果在编译的时候没有发生错误,但在连接的时候出现了找不到xxx的错误。一时之间不知道该怎么办才好,后来上网一查,自己再一想,唉,原来如此: 模版之所以为模版,就是可以容纳不同的类型嘛,所以它只有在指定了其类型的时候才会生成实际的代码,如果你只把模版的定义写在头文件中,那么你生成在使
2017-05-26 16:48:32
529
原创 搭建自己的wiki系统
搭建自己的wiki系统开源wiki很多,综合比较dokuwiki和mideawiki比较适合。关于各自详细介绍直接点链接。本人先用dokuwiki小试一把。搭建web服务Apache+PHP+mysql-windows下直接安装WampServer -linux下各自安装,文档网上很多。安装dokuwiki-下载dokuwiki -解压dokuwiki -拷贝dokuwiki到www目录下
2017-03-05 10:51:39
36607
2
原创 文件路径中转义符的问题
文件路径转义符引发的问题需求问题描述:文件路径在存储到数据库时‘\’就变没了,比如:“D:\abc\123.jpg”,经过C++语言的转义就变成“D:\abc\123.jpg”,在存到数据库里,这个过程mysql又会进行一次转义,结果‘\’就变没了。解决方案1.将’\’转换成”\\”C++的string提供了replace方法来实现字符串的替换,但是对于将字符串中某个字符串全部替换这个功能,st
2016-11-03 10:59:19
12538
原创 TCHAR引起的DLL函数导出问题
问题来由: 代码库有两个版本,其中一个代码库里的某个功能想用第二个代码库里相同的功能,由于项目需要直接用第二个版本的 dll。由于第二个版本代码库的dll在vs编译设置方面与第一个版本的有所不同,导致导出的函数名不一致。不同点在对TCHAR的设置上,“配置属性->C++->语言” 的“将wchar_t配置成内置类型“,第一个设置为no ,第二个设置了yes。 两者导出的函数名有何不同? 差别在
2016-10-18 09:57:08
361
原创 Compiling erro C2061 ( identifier 'STAT_CHUNK')问题
Compiling erro C2061 ( identifier ‘STAT_CHUNK’)错误: [cpp] view plain copy print? error C2061: syntax error : identifier ‘STAT_CHUNK’ ………….. 解决:应该是版本的问题,检查你的项目目录下的
2016-09-23 17:10:54
1624
原创 CMake学习总结
什么是CMake?CMake的由来?做什么用的?怎么用?以及使用过程中遇到的一些问题。大家都是知道程序是由成百上千的.h,.cpp文件通过编译器生成的,那么大量的源码文件就需要项目工程来构建和管理。windows下自然是VS开发工具,linux下使用Qt Creator,eclipse等等,但是两个不同平台上面的项目构建不能相互移植,当然Qt Creator是跨平台的工具,已经帮我们解决了好多问题
2016-09-10 22:44:21
15834
原创 Qt画图
Qt画图有几个概念先要理清楚:QImage、QPixmap、QBitmap和QPicture。都是处理图像的类,有着各自的特点。 QImage优化了I/O操作,可以直接存取操作像素数据; QPixmap主要用来在屏幕上显示图像; QBitmap从QPixmap继承,只能表示两种颜色; QPicture是可以记录和重放QPainter命令的类。QImage提供了与硬件无关的图像表示方法,通过Q
2016-09-04 18:37:00
856
转载 关于hpp文件
hpp,顾名思义等于.h加上.cpp,在boost、Xerces等开源库中频繁出现。 hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的obj,采用hpp将大幅度减少调用pro
2016-08-15 17:04:12
3581
转载 QApplication与QCoreApplication
QApplication (GUI 程序中 有且仅有一个)QApplication 类 管理GUI程序的控制流和主设置。QApplication 包含主事件循环。所有来自窗口系统和其他源的事件将被处理和分配。它也处理程序的初始化,析构和提供会话管理。对于非GUI的用QCoreApplication 代替QApplication,它不依赖QtGui库。qApp是一个全局的指针,指向QApplicati
2016-07-03 00:14:38
14472
3
原创 glog使用
版本:glog-0.3.4 下载: https://github.com/google/glog http://download.youkuaiyun.com/detail/caowei880123/9565134编译: glog-0.3.4里面有vs2008的sln 打开sln直接编译就行了,没悬念.编译后生成: libglog.dll libglog.lib libglog_static.lib.
2016-07-01 17:36:40
4509
原创 C++开源log选用
C++比较有名的日志类库公有log4cpp 、log4cxx、 log4cplus、glog,其中log4cpp log4xx最近两年都没有更新了。只有log4cplus和glog在更新,因此在log4plus和glog二选一。glog的典型用法 LOG(INFO) << “Found ” << num_cookies << ” cookies”; 是线程安全的,宏展开后会等价于新建一个LogM
2016-06-30 15:00:07
3339
转载 学习OpenGL
openGL官网https://www.opengl.org/如何检测显卡类型和OpenGL版本? [OpenGL入门学习](http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html)** OpenGL在线书籍:Learn OpenGLOpenGL库深度剖析 & gl,glu,glut的区别OpenGL开发库的组成开发基于Open
2016-06-26 14:33:02
1652
原创 MFC线程相关问题
MFC线程分为UI线程和工作线程 两者通信是个麻烦事,比如工作线程算出的一个结果要在UI上显示,直接在工作线程中使用UI的控件会出问题,一般有一下两种解决办法 发消息到界面线程里,让界面线程来更新,界面更新只能在主界面线程里面更新! 1.工作者SendMessage(PostMessage)让UI线程去更新界面 2.不要把CWnd指针传递到线程中,而是把CWnd所对应的HWND窗口句柄传递进
2016-06-23 11:22:56
605
原创 MFC下画图
MFC下画图CBitmap,HBitmap,Bitmap区别及联系加载一位图,可以使用LoadImage:HANDLE LoadImage(HINSTANCE hinst,LPCTSTR lpszName,UINT uType,int cxDesired,int CyDesired,UINT fuLoad);LoadImage可以用来加载位图,图标和光标加载时可以规定加载图的映射到内存的大小:cxD
2016-06-22 17:26:24
1834
原创 Sqlite管理工具选用
Sqliteadmin AdministratorSQLite Administrator 是一个强大的工具,可轻松创建、设计和管理 SQLite 数据库文件。简单可用,但sqliteadministrator 已经不再更新了,且不支持中文。 故个人建议不再使用。 SQLite Expert SQLite Expert 提供两个版本,分别是个人版和专业版。其中个人版是免费的,提供了大多数基本的
2016-04-16 17:20:51
744
转载 c#调用C++的DLL找不到入口点以及衍生的相关问题
DllImport属性详解API函数是构筑Windows的基石, 是Windows编程的必备利器。每一种Windows应用程序开发工具都提供间接或者直接的方式调用Win32API,C#也不例外。使用Win32API的一个好处就是,我们可以实现更多的功能。首先,要引入命名空间:using System.Runtime.InteropServices;然后,声明在程序中所要
2016-04-07 19:50:22
26379
1
原创 lua相关
Lua编辑调试器 BabeLua BabeLua是一款基于VS2012/2013(简称VS)的免费开源的Lua集成开发环境,在Lua编辑和调试方面,具有如下功能和特性:Lua语法高亮 语法检查 自动补全 格式化代码 一键注释 自定义代码折叠 工程管理 快速搜索和跳转 文件大纲 注入宿主程序内对Lua脚本进行调试 设置断点观察变量值 查看堆栈信息Lua 的 .NET 实现:Ne
2016-03-15 22:46:17
436
原创 rapidxml使用
string 被rapidxml截断string str = "<Person><Name>test</Name><ID>2</ID><Name>police</Name></Person>"; xml_document<> doc; doc.parse<0>( const_cast<char*>(str.c_str()) );执行上面一段代码
2016-03-15 17:54:55
963
原创 .Net脚本解决方案探索
网上搜索了一下,涉及到几个开源东西,如下 1.Script.Net Reference: .NET 动态脚本语言Script.NET系列文章汇总 非常精彩的应用举例 接触Script.Net2.IronPython 通过使用IronPython 运行时库,你可以让Python脚本运行在你的.NET程序中3.Python for .Net Python for .NET 是一个可以让 P
2016-03-13 11:39:53
795
原创 字符集与字符编码的那些事
字符集与字符编码什么是字符集?字符集有哪些? 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行
2015-12-10 20:21:46
1833
原创 XML Data Bindings With gsoap
关于XML Data Binding 学习过程中遇到的一些问题 首先是xsd文件的构造 什么是xsd? XML Schema 是基于 XML 的 DTD 替代者。 XML Schema 描述 XML 文档的结构。 XML Schema 语言也称作 XML Schema 定义(XML Schema Definition,XSD)。 什么是 XML Schema? X
2015-10-16 13:53:47
809
转载 C# 读取app.config配置文件 节点键值,提示 "System.TypeInitializationException 类型初始值设定项引发异常" 错误的解决方案
新建C#项目,在app.config中添加了appSettings项,运行时出现”配置系统未能初始化”的错误,MSDN里写到,如果配置文件中包含 configSections 元素,则 configSections 元素必须是 configuration 元素的第一个子元素。”,将自己添加的appSettings放到configSections 后,则正常。
2015-10-15 00:25:50
10087
原创 C#访问gsoap的服务
问题来源:C++开发一个webservice,然后C#开发客户端,这样就需要C#的客户端访问gsoap的服务端。(大家都知道gsoap是C/C++开发webservice的最佳利器) 为什么不考虑直接用wcf开发webservice?那是考虑到以后有可能要移植到Linux平台。gsoap实现C#(wpf)客户端调用C++服务器端首先建立C++服务器端,这里需要使用到gsoap 第一步:自己在桌面
2015-10-14 18:59:47
3993
SDL多窗口多线程渲染技术解析
2025-03-31
glog-0.3.4
2016-07-01
CPictureEx类
2011-03-19
glog不可跨dll项目使用
2016-11-20
TA创建的收藏夹 TA关注的收藏夹
TA关注的人