C++
c++一些基础知识
屁小猪
生于忧患,死于安乐
展开
-
g++ 链接 变量被多次定义?
map_test.hmap_test.cppmain.cpp因为违背了ODR。map_config定义在头文件中,并且是外部链接。这个头文件分别被两个源文件包含,这导致链接时map_config在两个目标文件中有定义。解决方案是将定义移到源文件中,在头文件中只留下纯声明。回答:1,在map_test.cpp文件中定义map map_config;2,在map_test.h中使用extern map map_config;变量和函...转载 2022-07-09 15:19:41 · 301 阅读 · 0 评论 -
gstreamer(1) -- ubuntu16.04配置gstreamer
ubuntu离线安装gstreamer,在线安装修改下载源也安装不过,ubuntu 18.04网上说可以在线安装过。参考地址:https://www.cnblogs.com/walker-lin/p/11520064.html原创 2022-02-24 21:04:34 · 449 阅读 · 0 评论 -
qt分包读取.gz压缩文件遇到问题,实际读取大小和反馈读取大小不一致
void client::getFileData(){ QString filePath = QCoreApplication::applicationDirPath() + "/20220210165640.gz"; //QString filePath = QCoreApplication::applicationDirPath() + "/20220210165640.xml"; qDebug() << "=======filePath======" <原创 2022-02-12 13:51:12 · 814 阅读 · 0 评论 -
qt 文件分包读取,每读取指定长度数据,数据后面总是多出字符
qt 文件分包读取,每读取指定长度数据,读取数据内容后面总是多出????等符号;反馈读取长度正确,但读取的数据内容多几个字节。最终原因:每次读取数据后,缺少’\0‘;现象: QString filePath = QCoreApplication::applicationDirPath() + "/20220210165640.xml"; //QString filePath = QCoreApplication::applicationDirPath() + "/file.txt";原创 2022-02-12 13:42:41 · 955 阅读 · 0 评论 -
qml给c++传值,c++同时给qml传值处理
程序目录结构callBackFun.proQT += quickCONFIG += c++11# You can make your code fail to compile if it uses deprecated APIs.# In order to do so, uncomment the following line.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs depre原创 2022-02-11 08:46:59 · 284 阅读 · 0 评论 -
functional 回调函数(1)
//使用lambda表达式实现//使用lambda表达式的方式可以简化这一个过程,参看如下一段代码,classB注册一个成员函数作为回调函数到classA中,//classA会保存这个回调函数(std::function对象)到成员变量中,用于后面使用,//lambda表达式中捕获了classB的this指针//使用std::move的方式保存function对象到classA中#include <iostream>#include <functional>#incl原创 2022-02-10 19:01:57 · 118 阅读 · 0 评论 -
2个类相互引用
2个类相互引用,头文件处用class a,类似方法解决Class.proQT -= guiCONFIG += c++11 consoleCONFIG -= app_bundle# You can make your code fail to compile if it uses deprecated APIs.# In order to do so, uncomment the following line.#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=原创 2022-02-10 16:38:52 · 758 阅读 · 0 评论 -
window 脚本文件.bat获取最高权限拷贝文件及c++调用.bat文件示例
window 脚本文件.bat获取最高权限拷贝文件@echo off::获取最高权限%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit::源文件路径set srcPath1="C:\ShareHarmoRobot\DHVI.lib"set srcPath2="C:\ShareHarmoRo原创 2021-10-26 13:05:30 · 689 阅读 · 0 评论 -
STL --详细介绍
https://blog.csdn.net/u010183728/article/details/81913729转载 2021-09-27 19:43:23 · 84 阅读 · 0 评论 -
multimap -- 键可以重复
#include <iostream>#include <map>#include <string>using namespace std;int main(){ multimap<int, string> MultiMapData; MultiMapData.insert(pair<int, string>(1, "111")); MultiMapData.insert(pair<int, string>(1, "1原创 2021-09-27 18:43:35 · 347 阅读 · 0 评论 -
什么是仿函数
先来看仿函数的通俗定义:仿函数(functor)又称为函数对象(function object)是一个能行使函数功能的类。仿函数的语法几乎和我们普通的函数调用一样,不过作为仿函数的类,都必须重载operator()运算符,举个例子: class Func{ public: void operator() (const string& str) const { cout<<str<<endl; } };原创 2021-09-27 16:06:18 · 881 阅读 · 0 评论 -
多基继承构造函数和析构函数顺序
多基继承:class adpterRobot : public Robot,public Dog构造函数顺序:父类先构造,子类后构造Robot::Robot()Dog::Dog()adpterRobot::adpterRobot()析构顺序:~adpterRobot::adpterRobot()~Dog::Dog()~Robot::Robot()vs2015环境见下载源代码:适配器设计模式...原创 2021-09-23 16:00:58 · 95 阅读 · 0 评论 -
window上可执行程序打包发布
工具Inno Setup Compiler脚本(xxx.iss); Script generated by the Inno Setup Script Wizard.; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName “VideoRecord”#define MyAppVersion “2.1”#define MyAppPublisher “HARMO ROBOTIC原创 2021-03-31 21:24:09 · 243 阅读 · 0 评论 -
modbus串口通信代码示例
modbus_rtu 代码示例1.目前编写modbus_rtu控制钧舵的产品,控制夹爪的开关,modbus_rtu主要掌握如下几点:1>串口打开2>串口读写3>串口报文组包4>串口报文校验5>串口关闭下列为vs2015 mfc工程编写代码示例:串口打开代码:xxx.cpp#include "stdafx.h"#include "Serial.h"#include "afxmt.h"#include <time.h>#include &l原创 2021-03-30 10:10:57 · 2856 阅读 · 1 评论 -
QT_QML_仿微信界面(实战)
QT_QML_仿微信界面(实战)效果如下:代码获取地址:链接:https://pan.baidu.com/s/1wmDqpe94HnY_OPjSou5xBg提取码:xmkt原创 2021-03-19 16:52:46 · 1810 阅读 · 0 评论 -
MFC将CString转为char*
int m_sComCString comName;//_T会根据项目选择的无编码和多编码来决定一个字符占的位数comName.Format(_T("\\.\COM%d"), m_sCom);//将CString转为char*需要加的申明USES_CONVERSION;//调用函数,T2A和W2A均支持ATL和MFC中的字符转换char * pComName = W2A(comName);_cprintf("[1]=%s\n", pComName);...原创 2021-03-12 11:10:53 · 388 阅读 · 0 评论 -
MFC终端输出调试信息不,且不为乱码
MFC终端输出调试信息//需要头文件#include<conio.h>//添加终端打印信息,一般都放到构造函数中AllocConsole();//打印信息_cprintf("---------------------1\n");//打印信息不为乱码//添加头文件#include <locale.h>//显示中文不为乱码setlocale(LC_ALL, “chs”);_cprintf("------中国------------\n");...原创 2021-03-12 11:01:52 · 209 阅读 · 0 评论 -
MFC中_T或L含义
一、 在字符串前加一个L作用: unicode字符集是两个字节组成的。L告示编译器使用两个字节的 unicode 字符集。如 L"我的字符串" 表示将ANSI字符串转换成unicode的字符串,就是每个字符占用两个字节。strlen(“asd”) = 3;strlen(L"asd") = 6;二、 _T宏可以把一个引号引起来的字符串,根据你的环境设置,使得编译器会根据编译目标环境选择合适的(Unicode还是ANSI)字符处理方式如果你定义了UNICODE,那么_T宏会原创 2021-03-11 16:38:07 · 747 阅读 · 0 评论 -
linux 64位编译32位及其64位动态库及其执行程序编译32/64位方法
linux 64位编译32位及其64位动态库及其执行程序编译32/64位方法文件夹下有如下程序:TcpClientStateOperate.hTcpClientStateOperate.cppTcpClientInclude.hTcpClientControlOperate.hTcpClientControlOperate.cppTcpClientCommon.hTcpClientCommon.cppmain.cpp1.#86_64为64位系统,默认gcc为64位的,会编译出64位的动态原创 2021-02-25 20:28:26 · 3447 阅读 · 0 评论 -
window下qt_qml程序打包
window下qt_qml程序打包1.按release或debug模式编译程序;2.将exe文件拷贝到单独目录;3.windeployqt.exe找到所在路径,加载到path环境变量;4.使用windeployqt对其进行打包。第一次打包qml的程序,直接 windeployqt xxxx.exe文件后,执行.exe文件,完全运行不了;5.原来对qml的程序打包,在执行windeployqt 命令时需要加上 -qmldir这个参数. 再次打包, 执行.exe文件,依然运行不了;6.用 winde原创 2021-02-25 09:41:59 · 717 阅读 · 0 评论 -
Qt5.12.1 for android调用lua
Qt5.12.1 for android调用lua1.下载lua源代码lua-5.4.2.tar.gz2.lua源码编译成android动态库liblua.so3.Qt编译的android程序调用add.lua具体细节见上篇文章Qt5.1.21_MinGW_Call_lua;代码下载及测试链接如下:https://pan.baidu.com/s/1_D-zLKijt4ghPymW-TL-dQ提取码:itdc...原创 2021-02-24 13:29:19 · 177 阅读 · 0 评论 -
Qt5.12.1 MinGW调用lua
1.下载lua源码,编译成静态库,realse版本,liblua.a2.编译成静态库2.12.22.32.4将.h/.cpp移除2.5添加现有文件,将lua源码src中所有文件添加到工程(除去lua.c/luac.c/MakeFile三个文件不要添加进来,lua.c是解释器,luac.c是编译器)添加后如下图:3.qt_MinGW调用lua3.1新建工程3.2添加静态到pro文件一般静态库编译为realse版本,加载静态库时选择如下:4 c++程序里调用luam原创 2021-02-24 11:46:34 · 198 阅读 · 0 评论 -
error C4996: ‘inet_addr‘: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WAR
vs2015报错:error C4996: ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings【原因】在VS2013以后的版本中,增加了inet_pton()、InetPton()之类的新函数,用于IP地址在“点分十进制”和“二进制整数”之间转换,并且能够处理ipv4和ipv6。而inet_addr是原创 2021-02-04 11:34:14 · 339 阅读 · 0 评论 -
vs编译报错_WINSOCK_DEPRECATED_NO_WARNINGS
vs2015编译报错:错误 C4996 ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings libharmorobotservice解决方式:SDL改为否原创 2020-12-25 10:47:08 · 445 阅读 · 0 评论 -
vs2015编译动态库,导出类,显示调用
vs2015编译动态库,导出类,显示调用(三)//动态库代码段//.h#ifndef HEADER_H#define HEADER_H#ifdef AFX_CLASS#define AFX_EX_CLASS _declspec(dllexport)#else#define AFX_EX_CLASS _declspec(dllimport)#endifclass AFX_EX_CLASS cls{public: cls(int i, int j); int add(); in原创 2020-12-24 20:26:41 · 430 阅读 · 2 评论 -
vs2015编译动态库,Qt5.12.1调用(二)
vs2015编译动态库,Qt5.12.1调用(二)最近做一个项目遇到一个问题,开始用vs2013编译的动态库,开始想用Qt的mingw73_64编译器编译主程序,调用动态库。程序调用动态库编译一直崩溃,编译不过,最后和同事讨论,发现只能用Qt自带的msvc编译器,但是还是编译不过,最终发现vs是2013,Qt上msvc2015版本不同,最后卸载vs2013,重新安装vs2015编译动态库,用Qt的msvc2015顺利调用动态库成功;见《动态库编译及调用.docx》,在资源中下载,对应程序链接文档中都有;原创 2020-12-23 22:58:30 · 598 阅读 · 0 评论 -
vs2015编译动态库及调用(一)
vs2015编译动态库及调用1.编译动态库,导出函数xx.h#pragma once__declspec(dllexport) int ADD(int a, int b);xx.cpp#include "dll.h"int ADD(int a, int b){ return a + b;}2.调用动态库main.cpp#pragma comment (lib,"../../dll/testdll1.lib")#include "../../dll/dll.h"#inclu原创 2020-12-23 18:09:29 · 529 阅读 · 2 评论 -
linux动态库加载三种方式及先后顺序
linux动态库默认搜索路径设置的三种方法众所周知, Linux 动态库的默认搜索路径是 /lib 和 /usr/lib 。动态库被创建后,一般都复制到这两个目录中。当程序执行时需要某动态库, 并且该动态库还未加载到内存中,则系统会自动到这两个默认搜索路径中去查找相应的动态库文件,然后加载该文件到内存中,这样程序就可以使用该动态库中的函 数,以及该动态库的其它资源了。在 Linux 中,动态库的搜索路径除了默认的搜索路径外,还可以通过以下三种方法来指定。方法一:在配置文件 /etc/ld.so.conf原创 2020-12-17 16:23:53 · 2882 阅读 · 0 评论 -
类对象和类指针区别
浅谈类对象和类指针本文转自。。。Student a;s.setName(“A”);//Studeng *b = new Student();Student *b;b = new Student();b->setName(“B”);分析:定义类对象基本格式是:Student a;在定义之后就已经为a这个对象分配了内存,且为内存栈;定义类指针基本格式是:Student b = new Student();在定义b的时候并没有分配内存,只有执行new后才会分配内存,且为内存堆。问题:原创 2020-12-17 10:35:37 · 1338 阅读 · 0 评论 -
_tmain()与main区别
1._tmain()与main区别_tmain()是微软操作系统(windows)提供的对unicode字符集和ANSI字符集进行自动转换用的程序入口点函数。函数签名为:int _tmain(int argc, TCHAR *argv[])当你程序当前的字符集为unicode时,int _tmain(int argc, TCHAR *argv[])会被翻译成int wmain(int argc, wchar_t *argv[])当你程序当前的字符集为ANSI时,int _tmain(int ar原创 2020-12-10 11:06:34 · 277 阅读 · 0 评论 -
转发报文,将浮点数转为16进制
1.转发报文,将浮点数转为16进制#include <stdio.h>#include <windows.h>int main(){ float fa = 1.1;//CD CC 8C 3F //浮点转16进制 BYTE buf[10] = {0}; memcpy(&buf[2], &fa, sizeof(fa)); //------------------------ float floatNum = 1.1; BYTE bData[4原创 2020-12-09 20:00:08 · 423 阅读 · 0 评论 -
智能指针(19)
#ifndef _A_H_#define _A_H_#include <iostream>using namespace std;class A {public: int a; int b; A(int a); A(int a, int b);};#endif#include "A.h"A::A(int a) { this->a = a; c...原创 2019-12-22 17:51:51 · 107 阅读 · 0 评论 -
友元类(18)
#ifndef _A_H_#define _A_H_#include <iostream>using namespace std;class A {private: int a; friend class B;//private public protect 权限对友元无影响public:};#endif#include "A.h"#ifnde...原创 2019-12-22 17:47:31 · 171 阅读 · 0 评论 -
友员函数(17)
#ifndef _A_H_#define _A_H_#include<iostream>using namespace std;class A {private: int a;public: void show(); friend void display();//友元函数声明};#endif#include "A.h"void A::show() { ...原创 2019-12-22 17:35:46 · 169 阅读 · 0 评论 -
重写_覆盖(16)
#ifndef _A_H_#define _A_H_class A{public: void show(int a); void virtual show(int a1, int b1);};#endif#include "A.h"#include <iostream>using namespace std;void A::show(int a) { cou...原创 2019-12-22 17:32:28 · 130 阅读 · 0 评论 -
隐藏(15)
#ifndef _A_H_#define _A_H_class A{public: void show(int a);};#endif#include "A.h"#include <iostream>using namespace std;void A::show(int a) { cout << "A::show(int a) = " <&...原创 2019-12-22 17:28:28 · 115 阅读 · 0 评论 -
运算符重载=(14)
#ifndef _A_H_#define _A_H_#include <iostream>using namespace std;class A {public: int a; A(); A(int a); A(A &a1); A &operator= (A &a1);//注意必须加引用,自己感受编译带来效果};#endif#in...原创 2019-12-22 17:25:06 · 87 阅读 · 0 评论 -
虚析构函数(解决内存泄漏)(13)
#ifndef A_H#define A_H#include <iostream>using namespace std;class A{public: A(); virtual ~A();};#endif#include "A.h"A::A(){ cout << "A::A()" << endl;} A::~A(){ cout...原创 2019-12-22 17:18:07 · 137 阅读 · 0 评论 -
虚函数析构函数(内存泄漏)(12)
#ifndef A_H#define A_H#include <iostream>using namespace std;class A{public: A(); ~A();};#endif A_H#include "A.h" A::A() { cout << "A::A()" << endl;} A::~A() { cou...原创 2019-12-22 17:15:42 · 207 阅读 · 0 评论 -
虚函数实现多态(11)
#ifndef XXX1_H#define XXX1_H#include <iostream>using namespace std;class fruit {public: void xian(); virtual void tian();};#endif#include "fruit.h"void fruit::xian() { cout <<...原创 2019-12-22 17:13:11 · 104 阅读 · 0 评论