C++
会编程的姑娘
这个作者很懒,什么都没留下…
展开
-
通过 GetFileVersionInfo 获取EXE 或 DLL的各种资源
查找网上资源甚多,但无一个代码能用,甚憾。自已阅读MSDN资料,终于写得下面代码,经测试通过,若有问题请发邮件给我,谢谢! struct LANGANDCODEPAGE { WORD wLanguage; WORD wCodePage;} *lpTranslate; void GetInfoFromExeAndDll(PCTSTR pcszFileName){ DWORD dw...转载 2021-11-30 17:58:54 · 663 阅读 · 0 评论 -
c和c++在windows下获取时间和计算时间差的方法总结
c/c++在windows下获取时间和计算时间差的几种方法总结一、标准C和C++都可用1、获取时间用time_t time( time_t * timer ),计算时间差使用doubledifftime( time_t timer1, time_t timer0 )。 精确到秒。测试程序如下: 1 #include <time.h> 2 #include <stdio.h> 3 4 int main() 5 { 6 time_t star.转载 2021-11-30 17:55:34 · 3111 阅读 · 0 评论 -
重叠IO overlapped I/O 运用详解
I/O设备处理必然让主程序停下来干等I/O的完成,对这个问题有方法一:使用另一个线程进行I/O。这个方案可行,但是麻烦。 即 CreateThread(…………);创建一个子线程做其他事情。 Readfile(^…………);阻塞方式读数据。方法二:使用overlapped I/O。overlapped I/O是WIN32的一项技术,你可以要求操作系统为你传送数据,并且在传送完毕时通知你。这项技术使你的程序在I/O进行过程中仍然能够继续处理事务。事实上,操作系统转载 2021-11-30 17:48:11 · 600 阅读 · 0 评论 -
字符串的转换问题
1.16进制的字符串与16进制数的转换:sscanf(“12AB”,”%x”,&lngHex); // 字符也可以为 ”0x12AB”原文链接:转载 2021-06-18 12:01:41 · 131 阅读 · 0 评论 -
取出一个字节(byte)中的每一位(bit)
例: byte byData = 0x36; int n0, n1, n2, n3, n4, n5, n6, n7;n0 = (byData & 0x01) == 0x01 ? 1 : 0;n1 = (byData & 0x02) == 0x02 ? 1 : 0;n2 = (byData & 0x04) == 0x04 ? 1 : 0;n3 = (byData & 0x08) == ...转载 2021-11-29 17:58:05 · 2747 阅读 · 0 评论 -
vs创建64位,未能创建此平台,因为已存在同名的解决方案平台
使用2010新建了一个工程,后来加入了另外一个64位工程,联合编译的时候发现主工程的平台是win32的。但是怎么都修改不成64的,未能创建此平台,因为已存在同名的解决方案平台。于是移除掉新的工程;发现配置管理器中存在win64和win32,由于已经存在了win64,所以不能创建了。需要修改配置管理器,删除win64;然后再新建win64这样就可以了。...转载 2021-06-29 08:39:40 · 1336 阅读 · 0 评论 -
【C语言】将正数转成负数,将负数转成正数
//将正数转成负数,将负数转成正数#include <stdio.h>int change(int num){ if (num < 0) { num = ~(num - 1); } else if (num >0) { num = ~num + 1; } return num;}int main(){ printf("%d\n", change(5)); printf("%d\n", c...转载 2021-06-28 17:59:41 · 8226 阅读 · 0 评论 -
Run-Time Check Failure #0,The value of ESP was not properly saved 错误解决
调用DLL函数,出现错误 Run-Time Check Failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function p...转载 2021-05-24 09:48:51 · 2308 阅读 · 0 评论 -
关于#include “stdafx.h“添加的错误问题
添加#include "stdafx.h"头文件遇到一个很奇怪的编译错误------ 已启动生成: 项目: MFC中如何利用ffmpeg和SDL2.0多线程多窗口播放摄像头的视频(窗口移动)_解码编码, 配置: Debug Win32 ------1> TDeviceInfo.cpp1>c:\program files (x86)\windows kits\8.1\include\um\dvdmedia.h(312): error C3646: “AvgTimePerFrame”: 未原创 2021-04-15 17:12:56 · 2481 阅读 · 0 评论 -
vs2015无法断点调试
最近使调试人家做好的dll的工程,在原来导出函数的接口里修改代码,断点调试无法进去,再把接口里的代码还原成原本的样子,又可以正常调试。之前在其他地方修改是可以正常调试,可能我不是在导出函数的接口里修改吧(我也没留意有没有在导出函数的接口里有没有修改过)。很奇葩的一个问题。如下图所示:网上搜一堆,最后是根据篇文章解决的:VS2015:当前不会命中断点,显示当前不会命中断点 没有与此行关联的可执行代码原文链接地址:https://blog.csdn.net/czp_374/article/detail原创 2021-04-10 15:47:56 · 1936 阅读 · 0 评论 -
C++创建多级目录
使用CreateDirectory创建,CreateDirectory一次只能创建一个目录,需要封装,网上到了一个封装的示例,亲自测试能用,原文地址在文章结尾。#include<iostream>#include <windows.h>#include <TCHAR.h>#include <stdio.h>#include<stdlib.h>#include <string>#include <shlwapi.h&g原创 2021-04-06 11:35:13 · 1495 阅读 · 0 评论 -
bool类型未初始化的产生的奇怪现象
在写C++代码时,有时候可能会忘记对一个布尔变量赋初值,运行程序后会发现产生了一些自己预想不到的结果,或者程序并没有按照设定的分支运行,今天来说一下这背后的原理性的东西。首先来看一段简单代码: int main(){ bool bTest; if (true==bTest) { cout << "1" << endl; } else if(false==bTest) { ...转载 2021-03-25 13:27:12 · 805 阅读 · 0 评论 -
c++创建dll导出函数名称
1. extern "C"的作用 extern "C"的作用是声明以c语言的格式编译当前代码: c语言没有函数重载编译后的函数名若有参数以"xxx@数字"结尾,“数字"为所有参数占用的内存大小(4位对齐);若无参数则结尾不含”@数字"编译后的开头字符与调用约定__cdecl(无开头字符)、__stdcall(以‘_’开头)、__fastcall(以‘@’开头)有关 上代码,两个函数,分别以c和c++格式编译,...转载 2021-03-23 20:05:29 · 914 阅读 · 0 评论 -
error MSB8041: 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。
最近新安装了vs2019企业版,用vs打开vs2015的工程出现如下错误:error MSB8041: 此项目需要 MFC 库。从 Visual Studio 安装程序(单个组件选项卡)为正在使用的任何工具集和体系结构安装它们。最后根据下面这篇文章解决的原文链接地址:https://blog.csdn.net/weixin_43264873/article/details/103409875内容如下: 工程移到vs2019提示错误MSB8041 MFC libra原创 2021-03-23 15:02:02 · 29994 阅读 · 15 评论 -
C++自动查询/搜索串口号
在VS平台上用C++查找串口号,采用注册表搜索串口号的方式,本程序直接将搜索到的串口号用阿拉伯数字打印到DOS屏幕上,相关代码如下: #include "stdafx.h"#include<iostream>#include<Windows.h> using namespace std; int GetComList_Reg(){ HKEY hkey; int result; int i...转载 2021-03-19 17:44:23 · 137 阅读 · 0 评论 -
c++ string转为char数组
string str1 = "ABCDEFG";char a[20];strcpy(a,str1.c_str());//用到 c_str()函数转载 2021-02-19 16:42:10 · 1787 阅读 · 0 评论 -
dump文件的调试
这段时间突然发现,要一下做一个金刚不坏之身的程序是不太可能滴,至于对我来说吧。 这个程序也要经过千锤百炼才能够练就一个强大的自信心。 我现在做系统就不考虑一下把程序做的足够强壮了,因为我也做不到,现在做系统时,总考虑的一个问题: 当系统异常的时候怎么去处理? 我不怕系统程序出现异常,甚至直接Over,只要能在异常时处理异常后继续运作,在崩溃重启后能够继续把没 干的活给干了,那么这个在我能够承受的范围...转载 2021-02-19 15:33:22 · 657 阅读 · 0 评论 -
Dump文件的生成和使用
1 简介 第一次遇到程序崩溃的问题,之前为单位开发了一个插件程序,在本机运行没有出现问题,但把生成的可执行文件拷贝到服务器上一运行程序,刚进入插件代码,插件服务就崩溃了,当时被这个问题整的很惨,在同事的帮助下了解到,对于程序崩溃,最快的解决方式是生成dump文件,通过生成dump文件使用调试工具进行调试,还原程序崩溃时的状态,能够起到快速定位排查问题的作用。Dump文件是进程的内存镜像。可以把程序的执行状态通过调试器保存到dump文件中。Dump文件是用来给驱动程...转载 2021-02-19 15:31:39 · 1773 阅读 · 0 评论 -
Critical error detected c0000374
我发现出现上述错误是 free 两次内存 float* dd=new float[2]; delete[] dd; delete[] dd; 转载于:https://www.cnblogs.com/hook-gou/p/9994662.html转载 2021-02-19 13:31:17 · 767 阅读 · 0 评论 -
MFC中创建和使用线程的方法
有关创建线程的问题有三种方法: 1.C语言函数,调用_beginthread(); 2.API函数,调用CreateThread(); 3.MFC函数,调用AfxBeginThread(); 推荐使用MFC函数AfxBeginThread(); 利用MFC里的AfxBeginThread函数能很方便地创建线程以及对线程进行等待、唤醒等操作。 1、函数原型 CWinThread* AfxBeginThread(...转载 2021-02-05 14:13:37 · 621 阅读 · 0 评论 -
VS2015 MFC资源视图在另一个编辑器中打开
解决: 1.窗口——>关闭所有文档 2.在资源视图中重新打开Test.rc(双击Test.rc再双击)转载 2021-02-05 14:05:17 · 688 阅读 · 0 评论 -
编译duilib时的警告:warning C4091: “typedef ”: 没有声明变量时忽略“DuiLib::EVENTTYPE_UI”的左侧
因为C语言版本需要typedef,c++的不需要,如果是使用C++,可以删掉typedef,但是这样就不能用C语言调用了。转载 2021-02-05 13:54:33 · 1444 阅读 · 0 评论 -
c++ 警告warning C4018 有符号/无符号不匹配
C++警告 warning C4018: “<”: 有符号/无符号不匹配 警告代码如下: for (int i = 0; i<matchePoints.size(); i++)  ...转载 2021-02-05 13:50:17 · 962 阅读 · 0 评论 -
c语言 error C4996: ‘strupr‘: The POSIX name for this item is deprecated. Instead, use the ISO C and C+
问题: 在使用visual studio 2013,进行调试执行代码时,出现如下错误: error C4996: 'strupr': The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name: _strupr. See online help for details. 解...转载 2021-02-05 13:48:04 · 2321 阅读 · 0 评论 -
warning C4307: ‘+’ : integral constant overflow或warning C4307: “+”: 整型常量溢出
取个文件大小都给我来警告:warning C4307: '+' : integral constant overflow或warning C4307: “+”: 整型常量溢出 问题出在这一句:DWORD dwFileSize = (FindData.nFileSizeHigh * (MAXDWORD+1)) + FindData.nFileSizeLow; 显然问题出在(MAXDWORD+1) 解决的方法也简单,把MAXDWORD赋给一个DWORDLONG.转载 2021-02-05 13:38:40 · 503 阅读 · 0 评论 -
warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
出处:http://blog.csdn.net/iesneaker/article/details/6524459 原因: 在使用多线程调试dll(MDd)模式的时候 <位置:配置属性 - c/c++ - 代码生成-运行时库> msvcrtd.lib 与 ibcmt.lib产生冲突 解决方法有2个: 1.右击工程 - 属性 ”配...转载 2021-02-05 13:28:10 · 957 阅读 · 0 评论 -
MFC定时器的使用
巧妙地使用定时器能达到意想不到的效果,写界面的时候能实现渐变,也能帮助多线程控制等我们知道,在VC的MFC中,已经为我们封装好了很多全面和强大的函数集,所以在MFC编程时,巧妙地调用MFC函数库可以为我们省去很多麻烦。其中定时器也可以在MFC程序中很好地利用。在MFC中和定时器相关的有三个函数:1.设置定时器(定义一个定时器的属性): SetTimer( UINT nIDEvent, UINT nEla...转载 2021-02-05 13:17:39 · 999 阅读 · 0 评论 -
0xC0000008: An invalid handle was specified
0xC0000008: An invalid handle was specified 这种情况一般是重复关闭handle导致的。mark给自己以防以后遇到同样问题。转载 2021-02-05 11:47:26 · 1820 阅读 · 0 评论 -
【VC】 关于SetupDiGetClassDevs函数的使用。
HDEVINFOWINAPISetupDiGetClassDevsW( __in_opt CONST GUID *ClassGuid, __in_opt PCWSTR Enumerator, __in_opt HWND hwndParent, __in DWORD Flags ); 使用这个函数会生成4个句柄数,(句柄数:任务管理器--进程--句柄数), 最近使用TI 公司 MSP430_Windows_HID_API,发现内存增加.转载 2021-02-05 11:28:45 · 539 阅读 · 0 评论