自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (7)
  • 收藏
  • 关注

原创 error C4996:VS2022 不让用 strcpy 了,老项目该怎么改

/ 或#pragmawarning# define _CRT_SECURE_NO_WARNINGS // 或 # pragma warning(disable : 4996)4996# define _CRT_SECURE_NO_WARNINGS // 或 # pragma warning(disable : 4996)一行搞定,编译立刻过。老项目里到处都是这种写法。问题在于它只是把仪表盘上的灯拔了。

2026-11-10 20:00:00 100 1

原创 Release 崩溃、Debug 正常:从应用程序日志到 dump 的完整定位流程

客户现场软件崩了,你不在场,没有调试器,没有复现步骤——只有一句"它刚才闪退了"。这篇按我在现场实际用的流程写:第一步永远是查 Windows 应用程序日志(不是抓 dump),第二步才是抓 dump 分析,最后讲清楚为什么 Release 崩 Debug 不崩,以及怎么从根上减少这类问题。"Release 下崩、Debug 下正常"是每个 C++ 工程师都撞过的墙。撞墙之后的反应分两派:新手第一反应是改回 Debug 发布——“反正 Debug 能跑”;

2026-11-05 09:19:29 280

原创 error LNK2019 无法解析的外部符号:一张完整的排查顺序表(C++/Visual Studio 版)

编译器只检查"声明",链接器才查"定义"。两者有一处不一致,编译能过,链接就崩。const 不一致:声明写,定义写——在 C++ 里这是两个不同的函数参数默认值只写在一处:默认值应该只在声明里写,定义里也写就是重复定义,但写岔了会触发 LNK2019类成员函数忘了写类名:类里声明了,定义写成了全局函数而不是调用约定不一致:声明用__stdcall,定义用__cdecl——符号名里那个__cdecl就是查这个用的快速验证:把声明复制粘贴到定义前面,编译一次,编译器会直接告诉你两个声明不匹配。

2026-11-04 09:38:13 173

原创 跟客户谈精度验收:为什么“0.01mm“写进合同就是个坑

精度验收是工控行业最容易扯皮的环节,而扯皮的根源往往在签合同之前就埋下了:精度指标没写工况、没写测量方法、没写测量设备。这篇讲四件事:为什么合同里光秃秃一个"0.01mm"必然出事、验收前要跟客户对齐哪五个口径、设备侧自己要先备好什么、以及验收现场出分歧时的处理流程。上一篇拆了精度是怎么一层层补回来的(

2026-11-03 20:00:00 188

原创 机器视觉定位精度是怎么一层层“骗“回来的:标定表、温度模型与分段修正

设备宣传册上写着定位精度 0.02mm,实际加工却差好几倍——这个差距不是销售吹出来的,是误差链一层层叠出来的,也是靠补偿手段一层层"骗"回来的。这篇讲三件事:为什么重复精度、绝对精度、加工精度是三件完全不同的事、误差到底从哪来(七个来源)、以及行业里实际在用的六层补偿手段(从选型到标定到实时纠偏)。上一篇讲了上位机怎么把运动、视觉、激光器在同一个时间轴上对齐(

2026-10-27 09:23:09 359

原创 工业上位机软件架构:运动控制、视觉、激光器怎么在同一个时间轴上对齐

工业上位机的架构难点不是功能多,是要指挥的几路东西性格完全不同,却必须在同一个时间轴上对齐。这篇讲四个核心问题:上位机该分哪几层、线程怎么切、时间轴对齐的三种手段(从软触发到硬件触发到位置比较输出)、以及 MFC 和 WPF 混合栈各自该待在什么位置。工业上位机的架构难点,从来不是功能多。功能多不难,加就是了。难的是你要同时指挥的这几路东西。

2026-10-24 10:00:00 256

原创 用 AI 写 C++ 半年,我划出了三条绝不交给它的线

AI 会不会取代 C++ 工程师?短期内不会,但会用 AI 的工程师会取代不会用的——这句话现在是共识了。在工控这个领域,能判断 AI 输出对错的工程师,会取代只会把 AI 输出复制粘贴的工程师。差别就在线一、线二、线三那三件事上。本系列做了 20 年工业控制 C++,说几句得罪人的实话工控的祖传代码,为什么谁也不敢删?(以及怎么安全地动它)用 AI 写 C++ 半年,我划出了三条绝不交给它的线(本篇)待更新:工业上位机的架构,从运动控制到视觉对位怎么在时间轴上对齐评论区聊聊。

2026-10-20 20:00:00 209

原创 遗留代码重构:为什么工控老代码谁也不敢删,以及六步安全动刀流程

每个工控公司都有一段没人敢碰的代码:写它的人早就不在了,没人说得清那些魔数是什么意思,但它养活着一整条产品线。这篇讲三件事——祖传代码长什么样、为什么删不得、以及真要改的时候怎么安全地动它(附一套我自己在用的六步流程)。上一篇聊了工控软件这行的处境(

2026-10-16 20:00:00 104

原创 做了 20 年工业控制 C++,说几句得罪人的实话

我做激光设备软件快 20 年了。这行最难的部分最不值钱,最不被看见的部分决定设备好不好卖。这篇文章不谈技术细节,只讲这个行业没人写下来的东西:为什么工控软件是"半个操作系统"、宣传册上的精度是怎么来的、为什么我们不敢升级编译器、以及为什么 AI 时代这套老经验反而更值钱。我做激光设备软件快 20 年了,切割、打标都干过。每次新认识人,聊到职业,对方的反应基本一致:哦,就是设备上那个界面吧,点开始点暂停那个。我以前还解释,现在不解释了,写这篇,一次说清。

2026-10-14 20:15:50 371 1

原创 【Dev-C++设置语言标准】

本文介绍了如何在Dev-C++中设置C++语言标准。操作步骤包括:打开软件后点击工具菜单,选择编译选项进入编译器设置,切换到代码生成/优化标签页,再选择代码生成栏,最后在语言标准下拉框中选择ISO C++11或GNU C++11标准。通过简单的GUI操作即可完成C++11标准的配置。

2025-10-14 23:19:17 273

原创 数据库工具SQLite简单使用

数据库SQLite简单使用

2024-11-18 19:54:23 1088

原创 【C#】HPSocket加载说明

HPSocket.net加载到C#工程中

2024-11-18 17:11:19 544

原创 Opencv为什么编译后没有opencv_world.lib

在编译Opencv源码时,会发现一个问题,有的人编译出来的是opencv_world.lib就一个。自己编译出来的lib有很多个,这是为什么?在用cmake编译时,注意configure之后,是否生成opencv_world.lib是要自己勾选的,默认是不勾选的,如果希望只生成一个lib,就勾选上。opencv_world.lib只是所有lib的一个打包,在使用的时候,直接在附加依赖项添加这一个就可以,主要是为了方便。 没有打包的话,把其它所有的lib文件全添加是一样效果。注意:一般不需要生成open

2022-03-21 17:04:29 6333 2

原创 Qt将按钮变透明的方法

Qt将按钮变透明的方法两种方式:第一种:flat属性:此时按钮已经变成透明的但是在实际运行时点击会出现按钮的形状;若要点击时也透明,则需在stylesheet中输入:background:transparent;第二种方式:直接在styleSheet中设置,如:QToolButton{background-color:rgba(0,0,0,0);}即可,这样QToolButton就是透明的了,这是在QToolButton的父窗口设置的,这样在这个父窗口下的QToolButton都

2021-12-28 08:15:44 11952

原创 Qt将QString转换成ASCII码

Qt将QString转换成ASCII码原理很简单,获取字符串的UTF-8编码,然后逐个读取强转成int类型即可:QString s = "Three Second 三秒";QByteArray byte = s.toUtf8();for(int i = 0; i < s.size(); i++){ qDebug() << int(byte.at(i))//输出;}...

2021-12-21 15:30:29 3456

原创 Qt variable “xxx“ has initializer but incomplete type

variable “xxx” has initializer but incomplete typevariable “xxx” has initializer but incomplete type编译报以上错误分析:“xxx”对应的类型没有找到,没包含定义该变量类型的头文件导致的。解决:包含该头文件==#include ==...

2021-12-20 08:09:17 1502

原创 QRect与QRectF的区别

QRect与QRectF的区别在Qt的使用过程中不免要与QRect和QRectF打交道。但是,QRect在数据存储表示上有一个很大的“历史遗留问题”!引申自QtAssistent对QRect的一段话:注意,由于历史原因,bottom()和right()函数返回的值偏离了矩形的真正的右下角:right()函数返回left() + width() - 1, bottom()函数返回top() + height() - 1。bottomRight()函数返回的点也是如此。此外,topRight()函数和b

2021-12-17 08:12:59 1433

原创 VS2015+QT5.9.0B在WIN10x64下编译QCAD

VS2015+QT5.9.0B在WIN10x64下编译QCAD安装VS2015QT5.9.0安装qt-vs-tools-msvc2015-2.1.1打开vs2015,菜单项Qt VS Tools–>Qt Options–>Add–>选择Qt安装的目录下的vs路径添加(我装在D盘是这样的:D:\Qt\Qt5.9.0\5.9\msvc2015_64)关闭vs2015,进入qt安装目录下(D:\Qt\Qt5.9.0\5.9\msvc2015_64\mkspecs\common)打开ms

2021-12-15 16:33:29 1114 1

原创 微信小程序添加Vant Weapp组件库

微信小程序添加Vant Weapp组件库首先右键小程序代码中的miniprogram文件夹---->在终端中打开输入:npm init之后一直回车选择默认就行在miniprogram文件夹中自动生成了package.json文件之后同样在终端执行:npm i @vant/weapp -S --production回到小程序开发工具----->菜单‘工具’----->‘构建npm’构建后会发现在miniprogram文件夹下会有个miniprogram_npm文件夹,里面存放v

2021-12-13 08:24:49 267

原创 Cocos Creator 计算两点角度、距离

Cocos Creator 计算两点角度、距离// 距离getDistance:function(start, end){ var pos = cc.v2(start.x - end.x, start.y - end.y); var dis = Math.sqrt(pos.x*pos.x + pos.y*pos.y); return dis; },// 角度getAngle:function(start, end){ //计算

2021-12-09 08:26:21 4587

原创 “不能实例化抽象类”错误

对于“不能实例化抽象类”编译错误,主要基本是子类继承于抽象类,然后有某个抽象函数没有实现导致:例如,抽象类Aclass A{public: A(); virtual test() const = 0;}子类B继承Aclass B : public A{public: B();}若这个时候直接实例化B,则会出现“不能实例化抽象类”的编译错误:int main(){ B b();}这时只要实现父类A中的所有纯虚函数即可:class B:public A{public:

2021-12-07 21:33:32 7941

原创 微信小程序云函数调用失败cloud.callFunction:fail cloud function service error code -504002, error message Functio

调用云函数时,控制台报错信息:Error: errCode: -404011 cloud function execution error | errMsg: cloud.callFunction:fail requestID , cloud function service error code -504002, error message Function not found: [f-wind]; at cloud.callFunction api;云端运行环境为 Node.js,需要先在本地安

2021-12-06 08:30:26 13181

原创 Qt模态对话框/非模态对话框/半模态对话框

模态对话框阻塞同一应用程序中其它可视窗口输入的对话框;显示模态对话框最常见的方法是调用其exec()函数:#pragma execution_character_set("utf-8")MainWindow *pMainWindow = new MainWindow();pMainWindow->setWindowTitle("主界面");pMainWindow->show();CustomWindow *pDialog = new CustomWindow(pMainWindo

2021-12-04 08:49:54 1446

原创 Qt使用注意事项

QList list1、 当T的类型为指针时,调用clear方法能置空,即list的size为0,但并不能释放其指针元素的内存。qDeleteAll可以释放容器元素内存,但没有对容器的置空操作,也就是size没变,所以qDeleteAll之后必须加上clear方法。也就是说,在T为指针的情况下,如果想要清空容器中的元素,必须先调用qDeteleAll方法,在调用clear方法。2、 当T为对象时,直接调用clear方法就可以清空list,并清空内存。QObject强烈建议所有QObject的子类都使

2021-11-29 11:34:52 1064

原创 Qt中的pro项目配置说明

注释以“#”开始,到这一行结束。快捷键:Ctrl + /

2021-11-26 09:03:16 928

原创 C++编码风格/规范/建议

Google 开源项目风格指南里面包含五份(C++ 、Objective-C、Python 、JSON、Shell )中文版的风格指南。

2021-11-23 09:58:33 3246

原创 Qt编写/注册/使用activex控件

idc -regserver activeHelloWorldDemo.dllWin+R运行regedit打开注册表,在[HKEY_CLASSES_ROOT]中查找控件DLL名称,在CLSID下查找idhtml方式测试:<html><head> <title>activeQtDemo</title></head><body> <object id="object" classid="CLSID:D6

2021-11-17 14:23:28 2034

原创 Qt解决汉字乱码问题

int main(int argc, char *argv[]){//解决汉字乱码问题 QTextCodec *codec = QTextCodec::codecForName("UTF-8"); QTextCodec::setCodecForLocale(codec); QApplication a(argc, argv); MainWindow w; w.show(); return a.exec();}使用 UTF-8 的编码解码器在 main(

2021-11-15 10:04:50 630

现代 C++ 教程:高速上手 C++ 11/14/17/20

现代 C++ 教程:高速上手 C++ 11/14/17/20

2024-11-29

HPSocket.Net库文件以及使用说明

HPSocket.Net库文件以及使用说明

2024-11-18

C++编码规范.doc

简述软件部门C++编码风格/规范/建议

2021-11-30

二维码基础知识.pdf

二维码基础知识.pdf

2021-12-18

算子SDK开发指南V3.3.0(C++版本).chm

海康算子开发指南

2021-12-18

srcml_1.0.0-1_win.exe

srcml_1.0.0-1_win.exe

2021-08-19

VC_redist.x86.exe

VC_redist.x86.exe

2021-10-18

zlib-1.2.5.win32.zip

zlib-1.2.5.win32.zip

2021-08-19

Tiled-1.3.5-win64.msi

tiled-1.3.5-win64 Tiled Map Editor 地图编辑器 适用cocoscreator2.4.0版本

2020-07-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除