C++
文章平均质量分 57
Burt_Wu
一个努力上进的程序员
展开
-
wchar* char*相互转换
其中主要用到的就是WideCharToMultiByte(双字节转单字节)和MultiByteToWideChar(单字节转双字节)这两个函数,至于为啥要调用两次,第一次是表示获取转换后的字符串长度,其中第四个参数设为-1表示的就是返回转换到字符串结尾的需要的长度,第二次调用第五个参数和第六个参数分别表示,转换后字符串存放的buffer和Size,保持和前面的获取的一致即可,至于为啥申请空间的时候长度加1,是为了让最后一个字符为'\0',符合字符串以'\0'结尾。原创 2023-02-09 18:04:23 · 1016 阅读 · 0 评论 -
LoadLibrary库的位数和项目位数的关系
我们都知道项目是分为32(x86)位和64位的,DLL也是这样,今天发现一个问题就是,64位的项目,使用LoadLibrary动态链接一个库时,报错,GetLastError为193,什么意思呢?就是说当前库的位数和项目位数不匹配,也就是说这个库为32位的,无法再64位的项目中使用,同理,64位的库也不能在32位的项目中使用,需要保持位数一致。PS:介绍一个获取DLL位数的指令,dumpbin /headers XXX.dll,这个dll传绝对路径,然后就可以查看其位数。VS 2010:Tools-原创 2022-04-02 15:51:33 · 374 阅读 · 0 评论 -
C++————CMD调用问题
先上一段代码,其中的Excute函数是我用ShellExcute封装的一个函数:WCHAR szCmd[MAX_PATH] = L""; WCHAR szExcuteCmdLine[MAX_PATH]=L""; WCHAR szSystemDir[MAX_PATH]=L"";SHGetSpecialFolderPath(NULL, szSystemDir, CSIDL_SYSTEM,false); wsprintf(szCmd, L"%s\\cmd.exe",szSystem...原创 2020-12-25 16:40:05 · 389 阅读 · 0 评论 -
QT----QThread卡UI问题
1、其实UI被卡住的原因很简单,是因为主线程里存在了十分耗时的动作,处理方法有很多,一般为了代码简洁,都会把这些动作写到一个线程中去,即开辟另外一个线程去处理,这样UI就不会卡住了。2、我这里想说的是,关于QThread有几种写法,大家比较常用的都是自己建一个类继承QThread然后重写run函数,这个很推荐使用,因为调用start函数后,就开辟了一个线程;还有一种偷懒的写法,不需要建一个类,只需要把耗时动作和QThread的started()信号绑定即可,但是注意,connect中的第五个参数必须是Q原创 2020-12-21 17:05:05 · 2362 阅读 · 0 评论 -
C++——库的创建和调用
项目中经常会用到DLL库,下面来介绍一下C++库的创建:1、首先新建一个Win32控制台应用程序,然后选择dll==》勾选导出符号==》不勾选预编译头文件,删除stdafx.h stdafx.cpp targetver.h dllmain.cpp文件,然后build即可生成dll,另外在改变dll的生成路径可在设置界面改变General下面的Output Directory,改变lib的生成路径可在,Linker下面的Advanced中的Import Library修改,其中$(SolutionDir)原创 2020-12-14 15:21:19 · 1453 阅读 · 0 评论 -
字节序
字节序有两种方式存放,一种是大端,一种是小端,所谓大端是指将所存的数按照高位存在于低地址,低位存于高地址的方式存放,就是说比如一个int的数1234 用十六进制表示就是0x01 02 03 04,如果是按照大端方式存储的,那么内存中排列就是01 02 03 04,小端就是,高位存于高地址,低位存于低地址,那么就应该是04 03 02 01,至于自己电脑是采用的哪个方式,可以自己定义一个变量,debug一下,看一下改变量的内存地址即可发现是那种模式(VS查看内存的步骤:调试模式下,Tools->窗口==原创 2020-05-11 15:02:36 · 143 阅读 · 0 评论 -
关于VS修改项目名称方法
之前看过几个博客,其中有一个博客写的挺好的,网址:https://blog.csdn.net/qq_33431368/article/details/78985988但是我今天要说的是,那个博客过于详细,要改很多东西,一些小tool可能改起来比较容易,但是对于大一点的tool改起来就比较烦了,那个博客改的步骤就是,先改.sin文件名字,然后编辑把里面名称替换,然后进根目录下,同样方法改.vcx...原创 2020-04-17 16:28:41 · 2289 阅读 · 0 评论 -
C++一些容易忘得东西
看了一下C++基础知识,发现有些东西很容易忘,下面稍微看一下:1、重载、重定义、重写这三个东西得区别,他们都是在基类和派生类中发生的,重载是说得是你函数名是一样得,但是你得返回值或者参数类型有区别这样的继承后的函数就称为重载,这种方式编译器在编译期间就知道要执行的函数,称为静态链编。重定义是指函数一模一样你相当于把基类的函数给完全隐藏了,用的自己的。重写是在多态中使用的,是把基类中的某个...原创 2019-06-10 14:33:44 · 204 阅读 · 0 评论