![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c++
文章平均质量分 54
simple_whu
这个作者很懒,什么都没留下…
展开
-
使用ffmpeg的c++库读取视频流和其中的SEI数据
FFmpeg是一个多媒体软件框架,支持多种新旧视频编码格式,提供解码、编码、 转码、多路复用、解复用、流式传输、过滤和播放等功能。原创 2024-09-01 23:56:36 · 1163 阅读 · 0 评论 -
使用C++库OSG遍历多层次、PageLOD的osgb模型中的点云并保存
推荐使用vcpkg编译安装;或从下载编译好的库。原创 2024-07-19 11:20:11 · 796 阅读 · 0 评论 -
在VS2022中通过Nuget将vcpkg环境集成/卸载到c++项目
vcpkg是微软和C++社区维护的免费开源C/C++包管理器。利用它,可以一条命令编译安装用户所需的库;提供CMake配置文件;并且对于Windows开发者,在Visual Studio中集成后还可以自动链接静态库,非常方便易用。一般而言,开发者仅需要一个vcpkg环境,运行命令后,所有解决方案通用。然而对于某些开发工作,需要一个独立的环境来编译特定版本的库,因而需要新创建一个vcpkg环境,并在项目中集成。本文将介绍如何为某个解决方案集成特定的vcpkg环境,并正确卸载。原创 2024-07-18 17:46:26 · 748 阅读 · 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 · 524 阅读 · 0 评论 -
使用GDAL读取图像时报错:‘xxxx.JPG‘ not recognized as being in a supported file format.
若你的程序中在调用GDALOpen之前没有调用,先去把这句加上再说。如果继续报错,则表示当前你使用的gdal库不支持读取JPG图像格式。大概率是在编译GDAL时未添加对JPEG格式的支持。原创 2024-07-17 15:41:08 · 288 阅读 · 0 评论 -
使用GDAL(C++库)从末尾行开始向上读取图像数据
OpenCV等图像库默认的读取方式都是从第一行开始,逐行读取数据(自顶向下),填充到内存缓冲区;对于某些特殊应用,需要反行序读取(从末尾行读到起始行)的图像数据结果。GDAL提供了灵活的栅格数据读取方式RasterIO,下面介绍RasterIO的调用方式,以及如何利用它自底向上读取图像数据。原创 2024-07-17 15:40:41 · 990 阅读 · 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 · 540 阅读 · 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 · 848 阅读 · 1 评论 -
计算点集的最小外接矩形——OpenCV的minAreaRect函数
输入一系列二维点,返回其最小外接矩形。根据函数原型,输入的数据可以是类型,包含1个以上的点;返回值是centersizeangle。其中size和angle。原创 2024-03-15 11:54:55 · 2854 阅读 · 1 评论 -
opencv中两个LSD直线检测算法的区别与应用
同样是Line Segment Detector(lsd)算法,opencv中提供了两种实现,并且位于不同的模块。createLSDDetector还是createLineSegmentDetector,请知悉原创 2024-02-28 15:30:15 · 1348 阅读 · 1 评论 -
c++之long long 和 \_\_int64
同理,cout 也会有类似的问题。第二种解释是 cout 在输出之前会把要输出的内容先存入缓存区,中间多了一个步骤,也会带来性能的降低。对于一般的 C++开发者来说,其实这个问题不那么要紧,因为在实际开发当中,绝大多数情况使用 32 位的 int 就足够应付了。很有可能导致同样的题目,同样的算法,别人通过了,但是我们却超时了的情况。又有一个问题,它们是 C 语言的标准输入输出方式,需要提供标识符来代表变量的类型,那么问题来了。因为在算法竞赛当中,尤其是当数据量很大的时候,读入和输出占据的时间是非常可观的。转载 2024-02-21 21:29:31 · 126 阅读 · 0 评论 -
使用Ceres-Sovler进行四元数求解优化:LocalParameterization->Manifold
使用Ceres-Sovler进行四元数LocalParameterization以及理解LocalParameterization是什么?代码示例原创 2021-02-28 18:06:31 · 551 阅读 · 1 评论 -
C++睡眠函数:Windows平台下的Sleep函数和Linux平台的usleep函数
介绍了三个睡眠函数,分别在Windows、Linux和全平台可用。介绍了它们的时间单位和用法。原创 2023-12-31 11:40:40 · 2079 阅读 · 0 评论 -
使用openMVS库,在VS2022中启用c++17标准编译仍然报错
项目中引用了某些开源库(例如),编译时要求启用编译器对c++17的支持。没问题!大家都知道在下图所示的位置调整C++语言标准:但是,打开开关之后编译,依然报错:这可真是一个令人百思不得其解的错误啊。报错的文件是官方的头文件,双击之后跳转的错误位置也看不出个所以然。这下头大了。不过,之前编译openmvs库时,用的是同一版本的VS编译器,怎么就成功了呢?原创 2023-12-18 10:53:52 · 1435 阅读 · 1 评论 -
使用Open Scene Graph(OSG)库将现有PagedLOD模型增加一个平移量,并保存为记录子模型相对路径的模型
是Open Scene Graph(OSG)库中的一种LOD(Level of Detail)技术,用于管理和显示具有不同细节级别的场景数据。PageLOD模型通常用于处理大型地理空间数据,如地形或城市模型。它允许将场景分成多个页面(或块),每个页面可以包含不同级别的细节数据,以便根据观察者的位置和视野来动态加载和卸载这些页面,以提高渲染性能。PageLOD模型通常由多个文件组成,每个文件对应于一个页面或块,并包含该页面的不同细节级别的数据。原创 2023-11-08 11:34:22 · 765 阅读 · 2 评论 -
C/C++使用GDAL库编程窍门之——通用可移植性库(Common Portability Library, CPL)
在代码中包含了和/// 默认文件名字符串的编码是UTF-8不支持中文路径,设置此行代码后支持中文路径// 获取当前exe全路径// 从输入字符串提取(文件夹)路径,xxx\yyy.tif提取为xxx// 获取文件扩展名,不带'.'.// 递归地创建文件夹,即如果父文件夹不存在,亦创建之。第二个参数是文件夹访问权限,默认给0755即可。原创 2023-09-03 15:57:09 · 648 阅读 · 0 评论 -
Visual Studio在Debug模式下,MFC工程中包含Eigen库时的定义冲突的问题
Eigen\src\Core\PlainObjectBase.h(143,5): error C2061: 语法错误: 标识符“THIS_FILE”Eigen\src\Core\PlainObjectBase.h(143,1): error C2333: “Eigen::PlainObjectBase::operator new”: 函数声明中有错误;跳过函数体。原创 2023-08-05 19:44:12 · 1235 阅读 · 0 评论 -
使用CMake+vcpkg生成VS2022工程——以开源库openMVS为例
想在openMVS应用的基础上做一些改造,于是下载了其开源代码。为了改造它,首先要了解程序执行流程,要是能在VS里以debug模式来运行就好了!我们希望,最后的make编译在VS2022中进行,以便断点调试和修改源码重新编译。vcpkg的发展使我们的希望成真。原创 2023-05-22 20:24:35 · 1197 阅读 · 0 评论 -
AfxMessageBox的两种用法
函数声明如下:1.1 参数lpszText将显示在消息框的字符串。消息框的样式。有以下几类:一般没用。帮助的ID;若是0,将使用应用程序的默认帮助上下文。指向String Table中的字符串的唯一 ID。如果没有足够的内存显示消息框,则返回0;否则,返回下列值之一:如果消息框有 " 取消 " 按钮,按下键也将返回。如果消息框没有 " 取消 " 按钮,按 ESC 键不起作用。2.2 用法二:显示需要用户选择“是”“否”的对话框可以根据nRet的值判定用户点击了哪个按键。下面两个用法也同理。原创 2023-05-13 17:20:47 · 2421 阅读 · 0 评论 -
使用 /permissive- 编译器开关时变量名or被识别为关键字
VS2022已经默认开启对c++14的支持。并且,一般同时开启的还有开关。项目属性如下所示:然而,在许多早期代码中,函数名和变量名使用了c++14等新标准中的关键字,例如’or’,‘compl’,'not’等。在新的工程中引入这些代码,会导致编译时报错。VS会将函数形参解析为’or’关键字,等价于‘||’逻辑运算符。那么如何解决呢?原创 2023-04-14 16:42:35 · 483 阅读 · 0 评论 -
使用vcpkg时:applocal.ps1 不存在 请提供现有“.ps1”文件的路径,作为 -File 形式参数的一个实际参数
File 形式参数的实际参数“D:/vcpkg/scripts/buildsystems/msbuild/applocal.ps1”不存在。请提供现有“.ps1”文件的路径,作为 -File 形式参数的一个实际参数即说明找不到这个.ps1文件。原创 2023-04-10 11:03:44 · 900 阅读 · 0 评论 -
在 Visual Studio 20xx 中设置 AVX、AVX2、AVX512、IA32、SSE 或 SSE2
在VS中启用AVX,SSE等SIMD指令集的方法转载 2023-03-12 17:29:49 · 3823 阅读 · 2 评论 -
nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified
用VS编译colmap3.8,于是用cmakevcpkg配置好VS2022的工程。在编译时,需要使用nvcc编译器编译gpu代码。nvcc fatal : A single input file is required for a non-link phase when an outputfile is specified报错是/Zc:__cplusplus的错误使用引起的。原创 2023-03-12 17:09:30 · 1874 阅读 · 0 评论 -
OpenSceneGraph找不到plugin的解决方案
OpenSceneGraph库(c++)使用时提示找不到plugin的解决方案;附上OSG库查找插件的方式,希望有助于理解原创 2023-03-04 15:44:09 · 1047 阅读 · 0 评论 -
MFC多文档在CFileView中获取文档指针
MFC多文档在CFileView中获取文档指针,想当然地调用GetActiveDocument竟然无效!竟是多文档的缘故……原创 2023-02-19 11:45:32 · 195 阅读 · 0 评论 -
使用AfxGetApp()->GetMainWnd()而不是AfxGetMainWnd()使得MFC主程序接收辅助线程发送的消息
MFC辅助线程向主线程窗口发送消息使得MFC主窗口接收辅助线程发送的消息AfxGetMainWnd()在辅助线程中得不到主窗口指针原创 2022-11-29 18:52:20 · 1241 阅读 · 0 评论 -
VSCode C/C++提示“LPCSTR 类型的实参与LPCWSTR类型的形参不兼容“
VSCode中的C/C++插件会对当前代码进行错误检测,并以波浪线或其它形式标出。然而,有些代码不使用用宽字符类型LPCWSTR,因此会提示"LPCSTR 类型的实参与LPCWSTR类型的形参不兼容"。解决方法是,按Ctrl+Shift+P,输入Edit Configurations,选择JSON那一项,将c_cpp_properties.json文件中的defines属性的UNICODE,_UNICODE删除并保存即可。原创 2022-11-27 18:46:44 · 2765 阅读 · 1 评论 -
C语言fgets与fscanf获取字符串:规则与危险
fgets从文件中获取一行字符串,获取的字符串的最大长度为num-1(这一行有超过num-1个字符也只会读num-1个字符),并且在字符串的结尾还会添加一个'\0'终止符。因此,num最大取传入的参数str的数组长度。如果获取的是空行或者读到了文件尾,返回空指针;否则返回str。fscanf扫描字符串时在字符串的结尾还会添加一个'\0',因此设定要扫描的字符串的长度不能超过数组容量-1,否则可能造成越界错误原创 2022-10-19 22:25:29 · 890 阅读 · 0 评论 -
LP32,ILP32,LP64,LLP64,ILP64数据模型
在32位和64位平台上,long, int, 和指针类型变量所占字节数常常有所区别,本文介绍了几种数据模型和它们在不同平台上的字节数转载 2022-10-18 20:33:00 · 2202 阅读 · 2 评论 -
CentOS7.5+gcc7编译GMP、MPFR和SuiteSparse
CentOS7.5+gcc7编译GMP\MPFR和SuiteSparse原创 2022-10-17 16:34:29 · 1294 阅读 · 0 评论 -
Linux系统中获取临时文件路径 `GetTempPath`和`GetTempFileName`函数
为了在Linux系统中获得WIN API的和函数的功能,我们要在Linux下实现`GetTempPath`和`GetTempFileName`函数。原创 2022-10-17 15:04:21 · 1069 阅读 · 0 评论 -
CentOS使用SCL提供的gcc编译器版本为默认版本
SCL(Software Collection) 使您能够在系统上构建并同时安装相同组件的多个版本,而不会影响从分发版安装的软件包的系统版本。类似于conda这样的python环境管理器。本文介绍了如何安装scl-gcc并将其设置为系统默认的gcc版本。原创 2022-10-17 14:49:29 · 1198 阅读 · 0 评论 -
解决“调用GDALOpen打开路径含有中文字符的图像失败”的问题||GDAL不支持中文路径、打开中文路径文件失败
在所有使用GDALAllRegister();语句后面加上一句CPLSetConfigOption("GDAL_FILENAME_IS_UTF8","NO");如果使用到OGRAllRegiser()函数,为了支持中文,那么也需要作同样的修改。转载 2022-09-09 16:47:20 · 907 阅读 · 0 评论 -
Visual Studio C++项目的头文件搜索顺序
编译器按以下顺序搜索目录:本地相对路径;附加包含目录指定的路径;VC++下的包含目录。原创 2022-09-08 11:01:55 · 1841 阅读 · 0 评论 -
C++使用GDAL为tiff图像写入WKT字符串表达的空间参照和投影坐标系信息
WKT(Well-Known Text)是一种文本标记语言,其一种重要用途就是表达地理坐标信息。本文介绍了使用广受欢迎的GDAL库进行tiff文件的地理参考信息更新方法。原创 2022-08-26 16:53:13 · 1182 阅读 · 0 评论 -
C++设置程序运行时环境变量
使用_putenv函数可以设置程序运行时的临时环境变量。即仅对当前程序有效。输入参数为一个字符串。而getenv函数可以获取指定名的环境变量。原创 2022-08-26 15:49:33 · 2641 阅读 · 0 评论 -
Linux(Ubuntu)下C++获取可用内存、当前最大内存等信息
Linux获取当前进程的内存资源信息——sysconf函数和getrusage函数的简单使用。获取程序运行消耗的内存原理是:在运行关键算法前获取当前进程使用的最大内存,算法结束后再次获取当前进程使用的最大内存,相减就得到关键算法所消耗的内存。原创 2022-08-22 21:06:18 · 2739 阅读 · 0 评论 -
Visual Studio2019出现的离奇链接bug 无法解析的外部符号
实例如图所示的上述工程,各源代码文件如下:// main.cpp#include <iostream>#include "star.h"int main(){ DoIt(); std::cout << "Hello World!\n";}// star.h#pragma once#include<iostream>using namespace std;void DoIt();//star.cpp#include"st原创 2021-07-26 20:53:38 · 1013 阅读 · 0 评论 -
CUDA中的 “restrict“ is not allowed 错误
CUDA中的"restrict" is not allowed 错误const __restrict__ uint32_t *addr;语句报的这个错。这就要说到__restrict__的用法。__restrict__用法__restrict__用于标识一个指针,提示编译器:这个指针对应的内存是被唯一指定指针访问的。因此不能用于指针以外的类型,有以下几种正确和错误的用法__restrict__ SomeType b[];// 错误SomeType __restrict__ b[];// 错误_原创 2022-04-19 09:52:00 · 1323 阅读 · 0 评论 -
VS2017文件包含在偏移 0x351 处开始的字符 或者 常量中有换行符 问题解决
VS2017文件包含在偏移 0x351 处开始的字符 或者 常量中有换行符 问题解决操作:文件编码转utf-8;然后,打开项目属性页,配置属性__C/C++__命令行中添加(“/utf-8”),如图所示原创 2020-08-28 16:52:46 · 570 阅读 · 0 评论