
c/c++
文章平均质量分 60
C/C++语言相关的一切
simple_whu
被遥感专业耽误了当演员的帅哥<---->C++\Python玩家,以干掉所有bug为业!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
为什么GCC的wprintf与printf无法同时正常输出?
在GNU Linux平台上,有的用户出于好奇在同一程序中混合使用了wprintf与printf,结果发现只有其一能正常工作,百思不得其解。的确,这与Windows端的表现不一致。而在Linux平台上,只会输出。本文将解释。原创 2025-05-29 17:59:42 · 551 阅读 · 0 评论 -
解决报错error: ‘void_t’ is not a member of ‘std’
解决方式很简单,将编译使用的c++标准设定为c++17即可。博主是在编译ceres库时遇到的此报错。原创 2025-05-29 17:59:01 · 205 阅读 · 0 评论 -
C语言利用Windows Portable Devices API访问安卓设备文件
安卓手机刚问世不久时,将手机连接到电脑是通过UMS功能,在电脑端看起来手机就像一个U盘(读取速度也像!),里面的文件一览无余。近五年来,出于对手机文件的安全性可靠性的维护,安卓系统不再提供Windows端对手机存储的全权访问接口,而是提供了MTP协议或PTP协议进行文件传输。MTP协议是目前最有效的访问安卓设备文件的协议,可以实现对文件的拷贝、删除功能。缺陷在于访问速度慢,延迟较高,且无法使用常规的C/C++文件操作函数实现其访问,无法从命令行访问其内容(关于MTP带来的问题,请看文末链接)。原创 2025-05-26 11:59:09 · 1462 阅读 · 0 评论 -
Windows端的C函数setlocale、printf与wprintf打印中文字符谜局小解
wprintf对于输入的字符串一般用wctomb_s转换成多字节编码,若未调用setlocale则直接将转换后的多字节编码字节流输出到标准流。调用了setlocale之后,wprintf会再额外转换一次,将多字节编码的字节流先转为Unicode编码(UTF-16 LE),然后再根据输出控制台代码页转为多字节编码,将字节流输出到标准流。这次额外的转换正是printf和wprintf在不同代码页控制台能正确输出中文字符的根源。原创 2025-05-25 16:42:59 · 1086 阅读 · 0 评论 -
Ubuntu安装编译Pangolin时所需的OpenGL依赖
在Ubuntu24系统中编译安装ORB-SLAM3时,CMake会检测系统中是否存在OpenGL库。原创 2025-05-23 10:05:10 · 365 阅读 · 0 评论 -
在CMake中利用vcpkg配置C/C++环境
许多复杂的开源项目常常依赖数个C/C++库,挨个配置依赖库是非常繁琐的劳动。所幸现在我们有了vcpkg,可以帮我们省去很多配置的劳动。是一个跨平台的C/C++库配置工具。它可以方便地下载、编译、管理大多数的开源库。其使用方式在中有详细说明。原创 2025-05-19 16:45:01 · 1776 阅读 · 0 评论 -
使用PDAL库时报错:error LNK2001: 无法解析的外部符号 __imp_htons\__imp_htonl\__imp_ntohs\__imp_ntohl
error LNK2001: 无法解析的外部符号 __imp_htonserror LNK2001: 无法解析的外部符号 __imp_htonlerror LNK2001: 无法解析的外部符号 __imp_ntohserror LNK2001: 无法解析的外部符号 __imp_ntohl。原创 2025-05-15 12:02:53 · 247 阅读 · 0 评论 -
Ubuntu24.04编译ORB_SLAM的一系列报错解决
报错信息:error: ‘decay_t’ is not a member of ‘std’;原创 2025-05-14 21:57:53 · 589 阅读 · 0 评论 -
C语言标准库函数setlocale用法详解
C语言标准库函数setlocale定义在头文件中(在C++编程中,这个头文件又等价于或。原创 2025-04-25 16:57:58 · 1085 阅读 · 0 评论 -
Visual Studio C/C++编译器cl.exe的/source-charset与/execution-charset设置项
指定源代码的字符编码方法。未设置该项时,按照系统默认的字符编码解析源代码文件,例如在Windows平台是GBK编码。随着跨平台开发的流行,越来越多的代码编辑器默认以utf-8编码保存源代码文件,因而需要将设置为utf-8以顺利编码其中的中文字符。特殊情况:在Windows平台中,源码文件都使用GBK或GB2312编码时,可以不必手动设置/source-charset项,亦可以正常在命令行输入、输出中文字符。原创 2025-04-24 16:04:58 · 1289 阅读 · 0 评论 -
解决编译pcl时报错‘chrono_literals‘: is not a member of ‘std‘
error C2039: “milliseconds”: 不是 “std” 的成员。原创 2025-04-24 16:03:57 · 385 阅读 · 0 评论 -
解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“
在项目属性中添加宏定义,对应你的电脑cpu架构。目前大家使用的Windows系统中最流行的是AMD64位架构,也就是_AMD64_,添加该定义即可。原创 2025-01-06 17:29:11 · 1268 阅读 · 0 评论 -
辨析表达式++*p和*p++:自增自减++/--运算符与取值运算符*的优先级问题
学习C语言时,老师一般都会向同学们讲到++/–自增、减运算符。回过头来我们要问,为什么设计了这样的运算符?答案是——(由于很多地方如循环都会用到自增、减操作)为了简洁。然而,某些动机不明的考题也就围绕着++和–展开了。原创 2025-01-01 18:09:49 · 381 阅读 · 0 评论 -
编译libtorch时报错:NvToolsExt Could not open input file ***nvToolsExt64_1.lib
libtorch库是pytorch库的C++版本。有时为了提升程序性能、减少python调用,用户希望在自己的C++程序中使用libtorch,因而产生了自行编译libtorch的需求。在Windows平台上编译CUDA12支持的libtorch时,很可能会产生如下报错信息:下面分析报错原因,并给出解决方法。原创 2024-12-23 11:29:42 · 1323 阅读 · 0 评论 -
编译libtorch/pytorch相关error LNK2001: 无法解析的外部符号 “public: long * __cdecl at::TensorBase::data_ptr<long>
报错信息:error LNK2001: 无法解析的外部符号 "public: long * __cdecl at::TensorBase::data_ptr(void)const。原创 2024-12-23 10:14:46 · 471 阅读 · 0 评论 -
使用vcpkg安装opencv>=4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效
至少从2024年开始,发布的vcpkg默认安装的opencv版本都是4.x版。特别是4.9和4.10版本,编译、安装后的opencv头文件目录不再是,而是。原创 2024-12-21 22:05:18 · 1156 阅读 · 1 评论 -
libtorch(C++)编译错误nvcc fatal:Option ‘--dependency-file‘ requires one of ‘-M‘, ‘-MM‘
使用vcpkg编译libtorch库时,总是失败。查看编译日志,定位真正的问题是一条编译指令未成功,报错"nvcc fatal: Option ‘–dependency-file’ requires one of ‘-M’, ‘-MM’, ‘-MD’ or ‘-MMD’ to be specified"。下面具体分析为何出错。原创 2024-12-21 18:04:10 · 944 阅读 · 0 评论 -
编译OpenCV带CUDA时报错:Error: no instance of overloaded function “cv::cudev::blockReduce” matches
编译CUDA支持的OpenCV时可能会出现编译错误:CUDA中不存在OpenCV想调用的那个实例。也就是说,当前版本OpenCV和CUDA不匹配。例如,我尝试编译CUDA12.6,便会产生上述报错。解决办法:降低CUDA版本,或使用更高版本的OpenCV。在我的例子里,使用CUDA版本11.6即可。原创 2024-12-21 16:31:34 · 756 阅读 · 0 评论 -
Visual Studio使用Debug编译程序时链接Release编译的动态库时主程序设置的环境变量无法被库检测
开发者们通常需要利用第三方完成开发,而第三方库一般使用Release版本效率最高,所以有的开发者习惯不论在VS中以Debug模式还是Release模式编译程序,均链接Release模式编译的第三方动态库。然而,某些第三方库需要获取系统环境变量来正常工作,一些开发者在主程序中设置临时环境变量,以供动态库使用。这时会产生问题:使用Debug模式编译程序,链接Release编译的动态库时,主程序设置的环境变量无法被动态库检测。原创 2024-12-16 15:57:20 · 1569 阅读 · 0 评论 -
给VSCode的c/c++插件缓存数据换个目录
VSCode是一款好用的代码编辑器,其C/C++插件由微软官方出品,提供了编译、浏览、高亮、跳转等基本代码编辑功能。然而,该插件的默认缓存目录在C盘,很容易就消耗掉C盘的数十GB空间。因此产生需求:将缓存目录换到其他盘。原创 2024-12-11 17:41:08 · 2367 阅读 · 0 评论 -
Visual Studio C++项目编译报错无法解析的外部符号void __cdecl boost::throw_exception(class std::exception const &)
项目代码中引用了函数,但是找不到库里关于这个函数的定义。在更新版本的boost库中,该问题已不存在。原创 2024-12-04 15:10:06 · 363 阅读 · 0 评论 -
linux平台使用vcpkg编译、配置库
在linux平台中,也可以使用vcpkg来编译配置c++库。目前在linux平台仅支持编译静态库,即。是所有库的包含路径,可在VS或其他IDE中设置。安装完成后,在vcpkg文件夹下的。原创 2024-11-29 11:52:21 · 686 阅读 · 0 评论 -
PROJ/GDAL库设置资源文件proj.db路径的两种方法
proj.db是一个包含坐标转换信息的SQLite数据库,是PROJ运行所必需的资源文件。PROJ库也是GDAL库的一个重要依赖项,因此GDAL在使用PROJ的功能时,也间接地需要proj.db文件。下面提供两种设置proj.db路径的方法。原创 2024-11-29 11:41:49 · 2194 阅读 · 0 评论 -
使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)
vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。原创 2024-11-27 17:34:41 · 1370 阅读 · 0 评论 -
GDAL中影像geotransform参数的含义
获取、设置geotransform可分别调用函数。原创 2024-10-18 09:41:35 · 911 阅读 · 0 评论 -
GDAL地理坐标投影坐标转换类OGRCoordinateTransformation的成员函数Transform的参数顺序
可以一次性转换nCount个坐标。X、Y、Z坐标分别存储在xyz三个数组中。转换完成后,x,y,z数组中的值都被改变,所以如果要保留之前的值,需要用户自行注意。是WGS 84椭球UTM zone49投影带(中央经线111°E)下的坐标,对应的WGS 84椭球上的经纬度坐标为。原创 2024-10-16 16:43:30 · 1218 阅读 · 0 评论 -
使用ffmpeg的c++库读取视频流和其中的SEI数据
FFmpeg是一个多媒体软件框架,支持多种新旧视频编码格式,提供解码、编码、 转码、多路复用、解复用、流式传输、过滤和播放等功能。原创 2024-09-01 23:56:36 · 2111 阅读 · 0 评论 -
使用C++库OSG遍历多层次、PageLOD的osgb模型中的点云并保存
推荐使用vcpkg编译安装;或从下载编译好的库。原创 2024-07-19 11:20:11 · 1425 阅读 · 0 评论 -
在VS2022中通过Nuget将vcpkg环境集成/卸载到c++项目
vcpkg是微软和C++社区维护的免费开源C/C++包管理器。利用它,可以一条命令编译安装用户所需的库;提供CMake配置文件;并且对于Windows开发者,在Visual Studio中集成后还可以自动链接静态库,非常方便易用。一般而言,开发者仅需要一个vcpkg环境,运行命令后,所有解决方案通用。然而对于某些开发工作,需要一个独立的环境来编译特定版本的库,因而需要新创建一个vcpkg环境,并在项目中集成。本文将介绍如何为某个解决方案集成特定的vcpkg环境,并正确卸载。原创 2024-07-18 17:46:26 · 1188 阅读 · 0 评论 -
vcpkg integrate project报错:nuget produced unexpected output when attempting to determine the version
NuGet 版本: 6.10.0.107用法: NuGet [参数] [选项]键入“NuGet 帮助 ”,以获取有关特定命令的帮助。原创 2024-07-18 17:46:08 · 701 阅读 · 0 评论 -
使用GDAL读取图像时报错:‘xxxx.JPG‘ not recognized as being in a supported file format.
若你的程序中在调用GDALOpen之前没有调用,先去把这句加上再说。如果继续报错,则表示当前你使用的gdal库不支持读取JPG图像格式。大概率是在编译GDAL时未添加对JPEG格式的支持。原创 2024-07-17 15:41:08 · 709 阅读 · 0 评论 -
使用GDAL(C++库)从末尾行开始向上读取图像数据
OpenCV等图像库默认的读取方式都是从第一行开始,逐行读取数据(自顶向下),填充到内存缓冲区;对于某些特殊应用,需要反行序读取(从末尾行读到起始行)的图像数据结果。GDAL提供了灵活的栅格数据读取方式RasterIO,下面介绍RasterIO的调用方式,以及如何利用它自底向上读取图像数据。原创 2024-07-17 15:40:41 · 1238 阅读 · 0 评论 -
使用vcpkg编译的pcl库或vtk库时,产生compile error “vtkSmartPointer.h”: No such file or directory
编译器真的找不到头文件了。问题产生的原因是,一般认为,安装的c++库的头文件都放在vcpkg的包含目录下。但是对于vtk库,目前vcpkg将它的头文件放在vtk-x.x子目录下,也就是说所需的头文件正是被放到了这个目录下。在代码中包含,则只会在目录下查找该头文件,而不会到vtk-x.x子目录下查找,所以自然会报错误啦。此外,没有直接使用vtk库,但是如果在代码中包含了pcl库的,即,则会间接的包含,接下来发生的事正如上面所讲。原创 2024-06-10 19:24:16 · 1073 阅读 · 0 评论 -
使用vcpkg编译的glog动态库报错:error C1189: #error: <glog/logging.h> was not included correctly.
报错:error C1189: #error: was not included correctly.的宏定义就都会生效。因此就不会产生上述错误信息。这是由于,自0.7.0版本起,包含。使用vcpkg编译的。原创 2024-06-10 19:23:54 · 2747 阅读 · 1 评论 -
计算点集的最小外接矩形——OpenCV的minAreaRect函数
输入一系列二维点,返回其最小外接矩形。根据函数原型,输入的数据可以是类型,包含1个以上的点;返回值是centersizeangle。其中size和angle。原创 2024-03-15 11:54:55 · 4544 阅读 · 1 评论 -
opencv中两个LSD直线检测算法的区别与应用
同样是Line Segment Detector(lsd)算法,opencv中提供了两种实现,并且位于不同的模块。createLSDDetector还是createLineSegmentDetector,请知悉原创 2024-02-28 15:30:15 · 2251 阅读 · 1 评论 -
c++之long long 和 \_\_int64
同理,cout 也会有类似的问题。第二种解释是 cout 在输出之前会把要输出的内容先存入缓存区,中间多了一个步骤,也会带来性能的降低。对于一般的 C++开发者来说,其实这个问题不那么要紧,因为在实际开发当中,绝大多数情况使用 32 位的 int 就足够应付了。很有可能导致同样的题目,同样的算法,别人通过了,但是我们却超时了的情况。又有一个问题,它们是 C 语言的标准输入输出方式,需要提供标识符来代表变量的类型,那么问题来了。因为在算法竞赛当中,尤其是当数据量很大的时候,读入和输出占据的时间是非常可观的。转载 2024-02-21 21:29:31 · 485 阅读 · 0 评论 -
使用Ceres-Sovler进行四元数求解优化:LocalParameterization->Manifold
使用Ceres-Sovler进行四元数LocalParameterization以及理解LocalParameterization是什么?代码示例原创 2021-02-28 18:06:31 · 1223 阅读 · 1 评论 -
C++睡眠函数:Windows平台下的Sleep函数和Linux平台的usleep函数
介绍了三个睡眠函数,分别在Windows、Linux和全平台可用。介绍了它们的时间单位和用法。原创 2023-12-31 11:40:40 · 3014 阅读 · 0 评论 -
使用openMVS库,在VS2022中启用c++17标准编译仍然报错
项目中引用了某些开源库(例如),编译时要求启用编译器对c++17的支持。没问题!大家都知道在下图所示的位置调整C++语言标准:但是,打开开关之后编译,依然报错:这可真是一个令人百思不得其解的错误啊。报错的文件是官方的头文件,双击之后跳转的错误位置也看不出个所以然。这下头大了。不过,之前编译openmvs库时,用的是同一版本的VS编译器,怎么就成功了呢?原创 2023-12-18 10:53:52 · 1837 阅读 · 1 评论