<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[godmaycry的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/godmaycry</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; godmaycry]]></copyright><item><title><![CDATA[Linux下C/CPP开发，函数符号冲突问题]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/101779912</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/101779912</guid><author>godmaycry</author><pubDate>Mon, 30 Sep 2019 16:58:04 +0800</pubDate><description><![CDATA[起因
测试给我提了一个BUG，我们的程序在连接HTTPS服务端后，莫名crash。
在还原测试环境后，通过gdb调试，发现crash在libcurl的curl_easy_platform这个函数里面，于是开启了漫长的debug之旅，最终发现是函数符号冲突所致。
还原函数符号冲突情景
首先准备三个模块
静态库libA.a
动态库libB.so
可执行二进制test.bin

静态库libA.a
静态...]]></description><category></category></item><item><title><![CDATA[Linux下使用-static -lpthread静态编译出现段错误（Segmentation fault）]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/78718399</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/78718399</guid><author>godmaycry</author><pubDate>Tue, 05 Dec 2017 12:28:33 +0800</pubDate><description><![CDATA[Linux；静态编译；段错误；-static -lpthread；Segmentation fault。]]></description><category></category></item><item><title><![CDATA[Windows下使用MinGW编译boost库]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/78707416</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/78707416</guid><author>godmaycry</author><pubDate>Mon, 04 Dec 2017 10:51:29 +0800</pubDate><description><![CDATA[准备工作MinGW首先要安装MinGW，并添加MinGW的bin路径至环境变量Path。 
MinGW下载地址：https://sourceforge.net/projects/mingw-w64/ 
或：http://download.youkuaiyun.com/download/godmaycry/10143726 
MinGW配置成功标志：在cmd控制台下输入gcc -v，如显示gcc版本信息，即成功。]]></description><category></category></item><item><title><![CDATA[Windows下使用CMake+MinGW静态编译发布.exe程序]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/78700330</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/78700330</guid><author>godmaycry</author><pubDate>Sun, 03 Dec 2017 10:55:47 +0800</pubDate><description><![CDATA[最近使用mingw编译了一份boost静态库，在CMake编译成.exe程序发布后，发现仍旧提示缺少DLL文件。提示缺失的DLL文件大概如下：libgcc*.dll
libstdc++*.dll
libwinpthread-1.dll经过简单摸索之后，终于找到了解决方法。#需要在CMakeLists.txt添加以下内容#设置静态编译
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_]]></description><category></category></item><item><title><![CDATA[Boost库解密——自动链接库(auto_link)]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/78673001</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/78673001</guid><author>godmaycry</author><pubDate>Thu, 30 Nov 2017 10:22:40 +0800</pubDate><description><![CDATA[Boost库的自动链接库boost是一个著名而强大的C++开源库，它可以说是标准库STL的补充，被称为C++的“准标准库”。 
在boost库的应用中，大部分的接口只需要包含头文件即可，少部分需要链接已编译的boost库文件。然而实际使用你会发现，其实并不需要手动链接库文件，我们只需包含库文件路径，boost会帮我们自动链接库文件。 
这就是boost的自动链接库——auto_link。auto_l]]></description><category></category></item><item><title><![CDATA[C++设计模式——一个基于C++11的万用单例模板类]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/78458329</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/78458329</guid><author>godmaycry</author><pubDate>Mon, 06 Nov 2017 15:41:54 +0800</pubDate><description><![CDATA[单例模式概述单例模式（Singleton），是设计模式里面最常见、最常用的设计模式，也是最简单、最容易实现的设计模式。 
单例模式的目的很简单，创建一个全局唯一的对象（类or变量）。简单代码实现//Simple_Singleton.hclass Singleton 
{
public:
    static Singleton* GetInstance() {
        if (!m_pSin]]></description><category></category></item><item><title><![CDATA[Windows下CUnit编译安装教程]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/77480549</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/77480549</guid><author>godmaycry</author><pubDate>Tue, 22 Aug 2017 15:42:13 +0800</pubDate><description><![CDATA[工作需要在Win端编译一个开源库，而这个开源库依赖于CUnit。在sourceforge下载了CUnit-2.1-3，而文档的编译方法在win下根本编译不过去。去百度编译方法，却发现结果都是错的，最后在爆栈网（stackoverflow.com）找到了解决方法。
准备工具：
首先要安装mingw和msys，下载地址：点击打开链接
注意只需选择Basic Setup安装即可，如下图：]]></description><category></category></item><item><title><![CDATA[[C++11]std::packaged_task介绍及使用]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/72868559</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/72868559</guid><author>godmaycry</author><pubDate>Mon, 05 Jun 2017 17:16:34 +0800</pubDate><description><![CDATA[一、std::packaged_task简介
在上一篇，我们介绍了std::promise的使用方法，其实std::packaged_task和std::promise非常相似，简单来说std::packaged_task是对std::promise>中T= std::function这一可调对象(如函数、lambda表达式等)进行了包装，简化了使用方法。并将这一可调对象的返回结果传递给关联的s]]></description><category></category></item><item><title><![CDATA[[C++11]std::promise介绍及使用]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/72844159</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/72844159</guid><author>godmaycry</author><pubDate>Fri, 02 Jun 2017 16:16:48 +0800</pubDate><description><![CDATA[注：本文系原创，转载请注明地址及作者。
一、std::promise介绍
std::promise是C++11并发编程中常用的一个类，常配合std::future使用。其作用是在一个线程t1中保存一个类型typename T的值，可供相绑定的std::future对象在另一线程t2中获取。


二、代码示例：
下面我们通过几个简单小例子逐渐深入了解std::promise的使用方法。]]></description><category></category></item><item><title><![CDATA[虚拟机VMware设置开机启动]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/52371623</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/52371623</guid><author>godmaycry</author><pubDate>Tue, 30 Aug 2016 18:18:13 +0800</pubDate><description><![CDATA[VMware是使用最多桌面虚拟化工具程序，常用于工作站与服务器。
使用VMware最常见的问题就是不能在界面上设置开机启动，下面将介绍设置开机启动的方法。


第一步：
打开“运行”，输入“shell:startup”,回车进入启动文件夹。




第二步：
将VMware的桌面快捷方式复制到开机启动文件夹下面。




第三步：
右键VMware快捷方式-->【]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之巧妙运用定时器解决QTreeView/QTableView等QAbstractItemView实时条目统计问题]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46778127</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46778127</guid><author>godmaycry</author><pubDate>Mon, 06 Jul 2015 19:12:38 +0800</pubDate><description><![CDATA[QTableView等QAbstractItemView常用来做为表格显示，但一般情况下会放在另一个大框架下。比如说我写了一个数据库编辑器，主框架界面是QMainWindow，包含菜单栏、工具栏、状态栏，QTableView里显示的是数据库获取到的表格数据。
可我想在状态栏显示QTableView里实时选取条目的数目，说到这可能大家觉得问题太简单，写一个简单线程或者重写QTableView类里的]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之用QTabWidget写标签页（页码）的注意事项]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46706601</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46706601</guid><author>godmaycry</author><pubDate>Wed, 01 Jul 2015 09:39:48 +0800</pubDate><description><![CDATA[使用QTabWidget很容易实现浏览器多标签页的效果，QTabWidget的使用教程不再过多描述，网上实例很多，非常简单。下面说一个在使用QTabWidget写标签页时遇到的问题。
添加标签页时会用到如下：

int index = tabWidget->addTab(testWidget,strTitle);  //testWidget标签页控件，strTitle标签页标题
tabWid]]></description><category></category></item><item><title><![CDATA[VS2010/VS2012/VS2013+QT5编程之开发环境配置]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46514997</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46514997</guid><author>godmaycry</author><pubDate>Tue, 16 Jun 2015 10:24:52 +0800</pubDate><description><![CDATA[用VS+Qt5开发并不是什么难事，下面详细讲一下如何配置编译环境：
第一步：
              安装VS和其对应的sp补丁包，网上很容易就能下载到安装包，傻瓜式安装，这里不多介绍。
第二步：
              
点击打开链接

          分别在vsaddin里面选择下载最新的qt-vs-addin，在qt里面选择要下载的Qt版本，例如我用的是vs2010]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之QTableView数字排序]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46437583</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46437583</guid><author>godmaycry</author><pubDate>Wed, 10 Jun 2015 09:07:01 +0800</pubDate><description><![CDATA[很多人发现QTableView中的排序很不科学，比如列排序的一列数101、35、2、87、5、779，排序出来变成了101、2、35、5、779、87。再比如“中国”、“山东”、“济南”、“历下”这一列字符串，排序出来会变成“中国”、“历下”、“山东”、“济南”。
先说一下QTableView如何设置排序，首先请不要设置水平标题头隐藏（行排序请不要设置垂直标题头隐藏），代码如下：
    QH]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之QTableView同时删除选中的多行]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46423287</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46423287</guid><author>godmaycry</author><pubDate>Tue, 09 Jun 2015 10:21:40 +0800</pubDate><description><![CDATA[QTableView同时删除选中的多行，对于新手来说是一个容易出现错误的地方。
下面是一段错误的代码：
QModelIndexList indexList = tableview->selectionModel()->selectedIndexes();
QModelIndex index;
foreach(index,indexList)
{
   view_model->remov]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之为QTableView添加右键菜单]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46415581</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46415581</guid><author>godmaycry</author><pubDate>Mon, 08 Jun 2015 17:59:00 +0800</pubDate><description><![CDATA[QTableView是一个比较实用的类，下面教给大家如何在QTableView中添加右键菜单。#include 
#include 

QTableView *tableview;
QMenu *rightMenu;  //右键菜单
QAction *cutAction;  //剪切
QAction *copyAction;  //复制
QAction *pasteAction;  //粘贴
QA]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之QString与char*的相互转换]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/46372153</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/46372153</guid><author>godmaycry</author><pubDate>Fri, 05 Jun 2015 09:29:32 +0800</pubDate><description><![CDATA[在使用QT5+vs2010编程中，QString与char*的相互转换并不是那么简单，当QString或者char*包含中文时，适用于QT4的转换方法在QT5中转换出来很可能就是乱码。
QString转char*：
QString qstr = "中国山东济南";
std::string str = qstr.toStdString();
const char* ch = str.c_str(]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之解决中文乱码及一些编译未通过问题]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/45191769</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/45191769</guid><author>godmaycry</author><pubDate>Wed, 22 Apr 2015 10:37:19 +0800</pubDate><description><![CDATA[新手使用VS2010+QT5编程，最常见的问题就是中文乱码。然而QT5不同于QT4，网上QT4上解决中文乱码的方法是不适用于QT5的。下面介绍一种常用的解决中文乱码的方法：
首先，把源码文件全部转换成utf-8编码。（VS2010中的转换方法：打开任一.cpp/.h文件，文件》高级保存选项》如下所示）



在#include下面添加如下代码：
#if _MSC_VER >= 1600]]></description><category></category></item><item><title><![CDATA[VS2010+QT5编程之setWindowIcon报错解决方案]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/45168019</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/45168019</guid><author>godmaycry</author><pubDate>Tue, 21 Apr 2015 11:16:31 +0800</pubDate><description><![CDATA[遇到问题：
VS2010+QT5的环境下编译QT程序，在设置程序图标setWindowIcon这一块报错：
1>qt_demo001.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: __thiscall QIcon::~QIcon(void)" (__imp_??1QIcon@@QAE@XZ)，该符号在函数 "publ]]></description><category></category></item><item><title><![CDATA[关于QT4中程序移植到QT5中报“undefined reference to”问题]]></title><link>https://blog.youkuaiyun.com/godmaycry/article/details/45028229</link><guid>https://blog.youkuaiyun.com/godmaycry/article/details/45028229</guid><author>godmaycry</author><pubDate>Mon, 13 Apr 2015 16:38:30 +0800</pubDate><description><![CDATA[最近在学QT，发现QT4中的一些示例程序在QT5中会报错。具体是关于打印机的一个函数会报：
undefined reference to `_imp___ZN8QPrinterC1ENS_11PrinterModeE

undefined reference to `_imp___ZN12QPrintDialogC1EP8QPrinterP7QWidget

undefined referenc]]></description><category></category></item></channel></rss>