
C++
文章平均质量分 82
YapingXin
航天/航空/军工装备行业,航电系统、遥测/测发控系统、系统故障诊断、预测与健康管理(PHM)高级系统架构师。
展开
-
C Tips: 举例说明在 Visual C++ 中忽略 C4996 编译警告的几种方法
通过一个简单的小例子介绍几种忽略 C4996 编译警告的方法。原创 2024-06-20 09:33:39 · 1176 阅读 · 0 评论 -
在 Visual Studio 2022 (Visual C++ 17) 中使用 Visual Leak Detector
本文介绍了在 Visual C++ 2022 中使用内存泄漏检测工具 VLD 的方法。原创 2024-06-20 07:06:15 · 2103 阅读 · 0 评论 -
解决 Visual C++ 17.5 __cplusplus 始终为 199711L 的问题
自从 Visual Studio 2017 Version 15.7 以来,Visual C++ 中增加了一个编译选项:/Zc:__cplusplus,这个编译选项默认是关闭的,只有打开了这个编译选项,__cplusplus 这个宏才能被正确地更新为 C++ Language Standard 对应的值。原创 2024-06-15 09:39:59 · 1136 阅读 · 0 评论 -
Visual C++ Tips: 创建 SQLite 静态库
编译 SQLite 静态库。本文所使用编译工具软件:Visual Studio 2015 Community;SQLite 版本:3.9.2。原创 2015-11-14 23:15:02 · 2092 阅读 · 0 评论 -
C++ Tips: 获取更精确的系统时间(Windows 系统)
如果要获得真正毫秒级甚至更高精度的当前系统时间,必须跟 CPU 打交道,别无它法。原创 2015-10-28 12:21:36 · 14314 阅读 · 1 评论 -
C Tips: std::string / std::wstring 的 Trim 函数
std::string 和 std::wstring 的 Trim 函数。原创 2015-09-23 13:49:05 · 2403 阅读 · 0 评论 -
Visual C++ Tips: 创建 x64 Target
对于一些项目,已有 Win32 的 Target,没有 x64 的 Target,我们可以简单地从 Win32 Target 创建出一个 x64 Target 来,然后再看看有没有什么需要进一步改动的地方。通常这么创建完之后就可以直接用了,不需要进一步改动了。办法如下(看图就够了,不解释):详细的解释见MSDN:How to: Configure Visual C++ Projects to Tar原创 2015-09-22 18:37:36 · 1061 阅读 · 0 评论 -
在 Visual C++ 中使用 WinPcap / Win10Pcap
本文介绍了如何在 Visual C++ 项目中使用 WinPcap 或者 Win10Pcap。原创 2015-10-20 18:09:06 · 13217 阅读 · 3 评论 -
Visual C++ Tips: 在调试的时候设置命令行参数
如果我们想要在调试 VC++ 程序的时候带上命令行参数,可以这样做:在项目属性里面的 Configuration Properties | Debugging | Command Arguments 中,输入命令行参数即可。原创 2015-11-03 17:38:06 · 4394 阅读 · 0 评论 -
Visual Studio 2015 memory leak detection
Visual Studio 2015调试C++代码的时候有一个很爽的工具,就是Diagnostic Tools,用它可以查看代码的CPU执行时间、进程的内存占用。所以我们可以用Diagnostic Tools来分析内存泄漏。看下面两幅截图:这个工具我还没有用熟,我相信用熟练以后,一定能极大地辅助C++代码分析!附上一篇文章:N原创 2015-08-31 18:11:35 · 3147 阅读 · 0 评论 -
Windows API: 调用FindFirstFile之后发生的内存泄漏(未解决)
看这段正常得不能再正常的C语言源代码:bool check_file_exists(LPCTSTR lpFileName){ WIN32_FIND_DATA findFileData = { 0 }; HANDLE hFind = NULL; ULONGLONG fileSize = 0; hFind = FindFirstFile(lpFileName, &find原创 2015-08-31 18:22:14 · 2302 阅读 · 0 评论 -
Visual Studio 2015的C++开发新特性(链接)
参考文章:What’s New for Visual C++ in Visual Studio 2015Visual Studio 2015 中的 Visual C++Visual C++ in Visual Studio 2015通过智能单元测试构建更好的软件Channel 9: Visual Studio 2015 Diagnostic ToolsDiagnostic Tools d原创 2015-09-01 04:38:16 · 1951 阅读 · 0 评论 -
Visual C++ Tips: 程序执行路径,一个容易被忽视的问题
最近有个很搞笑的事情,我有个程序,通过 FindFirstFile 这个函数搜寻程序当前路径下的某个文件。FindFirstFile 这个函数大家应该很熟悉了,非常常用的 Windows API。我把程序无关的逻辑都去掉,只留下这部分代码,如下:// DirentDemo.cpp : Defines the entry point for the console application.//#in原创 2015-12-09 18:20:09 · 1369 阅读 · 0 评论 -
用 WinPcap 获取网络接口列表
在 WinPcap SDK 中,有一个函数:pcap\_findalldevs_ex,这个函数可以获得网络接口列表。本文给出了相应的示范程序。原创 2015-10-31 22:39:37 · 3003 阅读 · 0 评论 -
std::thread vs CreateThread
从 C++11 开始,线程,成为了 C++ 标准库的一部分,所以我们可以不再使用 CreateThread 来创建线程,简简单单地使用 std::thread 即可。而且,CreateThread 是平台相关的,而 std::thread 是跨平台的。原创 2015-12-29 05:04:09 · 5281 阅读 · 0 评论 -
Visual Studio 编译 POCO C++ Libraries 并设置开发环境
当前 POCO C++ Libraries 的最新稳定版是 1.9.0,提供了 CMake 文件,可以生成针对 Visual Studio 各个版本的工程文件。要编译 POCO C++ Libraries,首先要根据需要下载源码。如果只需要基本的功能就够了,可以下载 poco-1.9.0.zip。如果需要完整的功能,可以下载 poco-1.9.0-all.zip。注意完整的功能需要 OpenS...原创 2018-06-10 05:42:27 · 7155 阅读 · 10 评论 -
在 Windows 平台上用最快捷的方式编译 wxsqlite3
软件环境说明Windows 7 或者 Windows 10,Visual Studio 2015。 当前 wxWidgets 的最新稳定版本是 3.1.1,wxsqlite3 的最新稳定版本是 4.0.3。安装 wxWidgets 库由于 wxsqlite3 依赖于 wxWidgets,所以我们要先安装 wxWidgets 库。 在 wxWidgets 官方网站 上下载最新稳定版本...原创 2018-06-05 20:14:12 · 5621 阅读 · 0 评论 -
VC++ Tips: 如何从 DLL 导出 *.DEF
已有 .DLL 文件和 .h 文件,如何得到 .LIB 文件呢?本文介绍了详细的步骤。原创 2016-10-20 06:28:33 · 2161 阅读 · 1 评论 -
Resolve VC++ 2015 D8016 Error
把一个 VC++ 6.0 project 升级到 VC++ 2015 之后,编译的时候出现以下错误: D8016 : ‘/ZI’ and ‘/Gy-’ command-line options are incompatible原创 2016-08-28 22:10:10 · 1577 阅读 · 1 评论 -
在 Ubuntu 上安装 Codelite
在 Ubuntu 上安装最新的 Codelite C++ IDE。原创 2016-08-17 17:24:25 · 6890 阅读 · 1 评论 -
用 Visual C++ 2015 编译 FreeType 2.6.2
本文介绍了用 Visual C++ 2015 编译 FreeType 2.6.2 的详细过程。原创 2016-07-06 17:36:04 · 7565 阅读 · 4 评论 -
<dirent.h> in Visual C++
在 Dirent API for Microsoft Visual Studio 这篇文章中提到了如何获得 dirent.h 这个文件。可以直接从 Github 获得这个文件。原创 2016-05-18 14:59:59 · 11427 阅读 · 1 评论 -
Visual C++ Tips: 用 IP Helper 获得网络接口的友好名称(Friendly Name)
前面有篇文章:《用 WinPcap 获取网络接口列表》,是通过 WinPcap 库来获得网络接口列表,但是拿到的网络接口名称对于人(Human Being)来说毫无意义,如下图: 实际上我们在 Windows 控制面板(Control Panel)中看到的是网络接口的“友好名称”(Friendly Name),如下: 为了拿到网络接口的“友好名称”,我遍查 MSDN,终于找到了答案。以下是我写的原创 2016-01-04 16:36:14 · 4975 阅读 · 3 评论 -
Visual C++ Tips: 查询计算机主板的序列号
以下函数将通过命令行的方式查询计算机主板的序列号。一般情况下通过这个小程序可以得到主板序列号,但是如果OEM厂商没有在BIOS中写入主板序列号,那么我们可能不到主板序列号。原创 2015-11-30 07:22:45 · 6824 阅读 · 0 评论 -
C++ Tips: 在控制台中显示中文
首先,要保证你的控制台的当前code page是中文: 代码示例:// CppAnalyzerConsole.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include <iostream>#include <locale>using namespace std;int _tm原创 2015-08-24 12:15:02 · 4318 阅读 · 0 评论 -
Visual C++ Tips: warning C4996: 'stricmp' was declared deprecated
问题C4996这个编译警告以前遇到过,见:《Visual C++ Tips: warning C4996: ‘MBCS_Support_Deprecated_In_MFC’: MBCS support in MFC is deprecated》今天这个C4996警告不能用那个老的办法去解决: warning C4996: ‘stricmp’ was declared deprecatedOut原创 2015-07-02 20:19:02 · 3155 阅读 · 0 评论 -
Visual C++ Tips: fatal error LNK1276: invalid directive 'ComMode.Obj' found; does not start with '/'
问题将某古老的VC6项目迁移到VS2005,编译时出现这个错误: fatal error LNK1276: invalid directive ‘ComMode.Obj’ found; does not start with ‘/’解决经过广泛搜寻,发现是这样一条语句导致的这个编译错误:#pragma comment(linker, "ComMode.Obj")解决方案:把这行代码注释掉(Re原创 2015-07-02 19:45:16 · 2735 阅读 · 0 评论 -
错误处理(Error-Handling):为何、何时、如何
By 刘未鹏(pongba)C++的罗浮宫(http://blog.youkuaiyun.com/pongba)TopLanguage(http://groups.google.com/group/pongba)引言错误处理(Error-Handling)这个重要议题从1997年(也许更早)到2004年左右一直是一个被广泛争论的话题,曾在新闻组上、博客上、论坛上引发口水无数(不亚于语言之争转载 2013-12-05 11:00:03 · 4881 阅读 · 0 评论 -
[科普小短文]在C#中调用C语言函数(静态调用Native DLL,Windows & Microsoft.Net平台)
本文属于“科普”性质,面向对.Net不了解的读者。 对于不太了解.Net的人,如果想要了解.Net,我必须给他介绍P/Invoke。P/Invoke是什么呢?简单地说,就是在.Net中调用本地代码(Native code)的一种解决方案。所谓“本地代码”是相对于托管代码(Managed code)来说的。P/Invoke实在是一个非常棒(awesome)的特性。本来,.Net 这项技术...原创 2012-02-23 20:04:33 · 19627 阅读 · 18 评论 -
C/C++ Tips: 查看DLL文件中的输出函数的小工具
DLL Export Viewer,是Nir Sofer出品的免费实用小工具,用来查看DLL文件中输出函数,很有用。目前最新版本是:1.62官方介绍及下载地址:http://www.nirsoft.net/utils/dll_export_viewer.html原创 2013-07-25 02:25:59 · 5871 阅读 · 0 评论 -
Troubleshooting: [Visual Leak Detector] vld_x86.dll is missing from your computer
环境:Visual Studio 2008 on x86Visual Leak Detector 版本:2.3在VS里面做好Visual Leak Detector的设置后,就急急忙忙地开始尝试了。设置过程非常简单,见:Using Visual Leak Detector http://vld.codeplex.com/wikipage?title=Using%20原创 2013-07-23 14:55:22 · 6175 阅读 · 0 评论 -
Visual C++ 2010 Express Tips: 用 C 和 C++ 创建动态链接库
先简单说一下这篇小文的目的。其实纯粹是因为上一篇文章《将C语言源代码编译成动态链接库》里面介绍了用命令行工具(cl、link或gcc)创建动态链接库,但程序员在实际工作中用得最多的还是IDE,所以有必要说说在IDE里面怎么做这件事。创建动态链接库,那就直接用C++好了,Visual C++多么强大。但是我喜欢C语言胜过喜欢C++,所以打算看看如何用纯C来创建动态链接库。工具依然选择Visu原创 2012-02-23 19:19:50 · 9952 阅读 · 1 评论 -
泛泛地说说托管代码的运行效率问题
谁都知道C比C++快,C++比C#快。问题是快多少。而具体快多少也不应该泛泛而谈,应该是什么类型的操作中快百分之多少,以及细分为冷启动、热启动、运行中、多次运行均值、峰值、资源受限的一些特殊情况,分这些情况下分别向此地测试、分析、说明。Microsoft 提供的资料宣称 .NET 大约是 C/C++ 执行效率的 90%。XNA 则提供资料宣称 Managed DirectX原创 2012-04-24 05:30:48 · 2016 阅读 · 3 评论 -
关于Visual Studio 2010与64位系统的问题
这种问题是在论坛里经常被问到的问题:有没有64位的VS2010?Vs2010能不能编译64位的程序?我的回答是这样的:1. VS2010没有专门的64位版。但32位版可以在64位系统上面正常使用。2. 如果安装VS2010的时候,在安装选项里面,选择了 X64 Compilers and Tools那么你就可以编译x64版本的程序;同理如果你在安装原创 2012-03-31 08:40:26 · 58340 阅读 · 8 评论 -
解决MinGW运行时的libgmp-10.dll丢失错误(libgmp-10.dll is missing from your computer)
安装完MinGW之后,执行gcc.exe,出现以下错误:The program can't start because libgmp-10.dll is missing from your computer. Try reinstalling the program to fix this problem.实际上libgmp-10.dll就在MinGW安装后的bin文件夹中,并原创 2012-02-22 19:44:48 · 27349 阅读 · 7 评论 -
Visual Studio 2010中VC++ Directories的设置
以往,在Visual Studio 2008中,VC++ Directories的设置位于这里:Tools | Options | Projects and Solutions | VC++ Directories在Visual Studio 2010中,VC++ Directories的位置变了。如下:View | Other Window | Property Manage原创 2011-09-06 05:11:42 · 10515 阅读 · 1 评论 -
VC++ 也有 Refactoring 功能了
Visual C++ team于去年年底的时候,终于放出了VC++的 RefactoringExtension了,太好了。不过目前这还只是刚开始,有以下局限:仅限Visual Studio 2013。目前仅有Rename功能。下载地址:http://visualstudiogallery.msdn.microsoft.com/164904b2-3b47-417f-9b6b-原创 2014-02-04 14:00:58 · 5325 阅读 · 0 评论 -
Visual C++ 2012/2013的内存溢出检测工具
在过去,每次编写C/C++程序的时候,VLD几乎是我的标配。有了它,就可以放心地写程序原创 2014-05-19 05:55:13 · 9993 阅读 · 0 评论 -
Visual C++ Tips: 重载运算符“=”时出现的error C4430编译错误
问题正在将某个十分古老的VC++ 6.0工程文件转换成Visual C++ 2013的工程文件,遇到有一处编译不过:class CTemplate1 : public CBaseTemplate{ public: operator=(CBaseTemplate& ItemRef) { *this = (CTemplate1&)ItemRef; }};报错原创 2015-06-23 20:32:09 · 1178 阅读 · 3 评论 -
Visual C++ Tips: error C2823: a typedef template is illegal
问题正在将某个十分古老的VC++ 6.0工程文件转换成Visual C++ 2013的工程文件,遇到有一处编译不过:template <class T> typedef Link<T>* NODELIST;报错信息是: error C2823: a typedef template is illegal分析在MSDN上可以看到对C2823的解释: 《Compiler Error C2823》原创 2015-06-23 18:42:19 · 1825 阅读 · 0 评论