
c/c++
文章平均质量分 58
C/C++语言相关的一切
simple_whu
被遥感专业耽误了当演员的帅哥<---->C++\Python玩家,以干掉所有bug为业!
展开
-
解决在VS2019/2022中编译c++项目报错fatal error C1189: #error : “No Target Architecture“
在项目属性中添加宏定义,对应你的电脑cpu架构。目前大家使用的Windows系统中最流行的是AMD64位架构,也就是_AMD64_,添加该定义即可。原创 2025-01-06 17:29:11 · 816 阅读 · 0 评论 -
辨析表达式++*p和*p++:自增自减++/--运算符与取值运算符*的优先级问题
学习C语言时,老师一般都会向同学们讲到++/–自增、减运算符。回过头来我们要问,为什么设计了这样的运算符?答案是——(由于很多地方如循环都会用到自增、减操作)为了简洁。然而,某些动机不明的考题也就围绕着++和–展开了。原创 2025-01-01 18:09:49 · 336 阅读 · 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 · 966 阅读 · 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 · 373 阅读 · 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 · 702 阅读 · 0 评论 -
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 · 863 阅读 · 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 · 491 阅读 · 0 评论 -
Visual Studio使用Debug编译程序时链接Release编译的动态库时主程序设置的环境变量无法被库检测
开发者们通常需要利用第三方完成开发,而第三方库一般使用Release版本效率最高,所以有的开发者习惯不论在VS中以Debug模式还是Release模式编译程序,均链接Release模式编译的第三方动态库。然而,某些第三方库需要获取系统环境变量来正常工作,一些开发者在主程序中设置临时环境变量,以供动态库使用。这时会产生问题:使用Debug模式编译程序,链接Release编译的动态库时,主程序设置的环境变量无法被动态库检测。原创 2024-12-16 15:57:20 · 1414 阅读 · 0 评论 -
给VSCode的c/c++插件缓存数据换个目录
VSCode是一款好用的代码编辑器,其C/C++插件由微软官方出品,提供了编译、浏览、高亮、跳转等基本代码编辑功能。然而,该插件的默认缓存目录在C盘,很容易就消耗掉C盘的数十GB空间。因此产生需求:将缓存目录换到其他盘。原创 2024-12-11 17:41:08 · 1497 阅读 · 0 评论 -
Visual Studio C++项目编译报错无法解析的外部符号void __cdecl boost::throw_exception(class std::exception const &)
项目代码中引用了函数,但是找不到库里关于这个函数的定义。在更新版本的boost库中,该问题已不存在。原创 2024-12-04 15:10:06 · 320 阅读 · 0 评论 -
linux平台使用vcpkg编译、配置库
在linux平台中,也可以使用vcpkg来编译配置c++库。目前在linux平台仅支持编译静态库,即。是所有库的包含路径,可在VS或其他IDE中设置。安装完成后,在vcpkg文件夹下的。原创 2024-11-29 11:52:21 · 465 阅读 · 0 评论 -
PROJ/GDAL库设置资源文件proj.db路径的两种方法
proj.db是一个包含坐标转换信息的SQLite数据库,是PROJ运行所必需的资源文件。PROJ库也是GDAL库的一个重要依赖项,因此GDAL在使用PROJ的功能时,也间接地需要proj.db文件。下面提供两种设置proj.db路径的方法。原创 2024-11-29 11:41:49 · 1552 阅读 · 0 评论 -
使用vcpkg自动链接tinyxml2时莫名链接其他库(例如boost)
vcpkg的自动链接功能非常方便,但在某些情况下会出现过度链接的问题。原创 2024-11-27 17:34:41 · 1322 阅读 · 0 评论 -
GDAL中影像geotransform参数的含义
获取、设置geotransform可分别调用函数。原创 2024-10-18 09:41:35 · 744 阅读 · 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 · 1035 阅读 · 0 评论 -
使用ffmpeg的c++库读取视频流和其中的SEI数据
FFmpeg是一个多媒体软件框架,支持多种新旧视频编码格式,提供解码、编码、 转码、多路复用、解复用、流式传输、过滤和播放等功能。原创 2024-09-01 23:56:36 · 1825 阅读 · 0 评论 -
使用C++库OSG遍历多层次、PageLOD的osgb模型中的点云并保存
推荐使用vcpkg编译安装;或从下载编译好的库。原创 2024-07-19 11:20:11 · 1215 阅读 · 0 评论 -
在VS2022中通过Nuget将vcpkg环境集成/卸载到c++项目
vcpkg是微软和C++社区维护的免费开源C/C++包管理器。利用它,可以一条命令编译安装用户所需的库;提供CMake配置文件;并且对于Windows开发者,在Visual Studio中集成后还可以自动链接静态库,非常方便易用。一般而言,开发者仅需要一个vcpkg环境,运行命令后,所有解决方案通用。然而对于某些开发工作,需要一个独立的环境来编译特定版本的库,因而需要新创建一个vcpkg环境,并在项目中集成。本文将介绍如何为某个解决方案集成特定的vcpkg环境,并正确卸载。原创 2024-07-18 17:46:26 · 1041 阅读 · 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 · 658 阅读 · 0 评论 -
使用GDAL读取图像时报错:‘xxxx.JPG‘ not recognized as being in a supported file format.
若你的程序中在调用GDALOpen之前没有调用,先去把这句加上再说。如果继续报错,则表示当前你使用的gdal库不支持读取JPG图像格式。大概率是在编译GDAL时未添加对JPEG格式的支持。原创 2024-07-17 15:41:08 · 582 阅读 · 0 评论 -
使用GDAL(C++库)从末尾行开始向上读取图像数据
OpenCV等图像库默认的读取方式都是从第一行开始,逐行读取数据(自顶向下),填充到内存缓冲区;对于某些特殊应用,需要反行序读取(从末尾行读到起始行)的图像数据结果。GDAL提供了灵活的栅格数据读取方式RasterIO,下面介绍RasterIO的调用方式,以及如何利用它自底向上读取图像数据。原创 2024-07-17 15:40:41 · 1164 阅读 · 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 · 912 阅读 · 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 · 2125 阅读 · 1 评论 -
计算点集的最小外接矩形——OpenCV的minAreaRect函数
输入一系列二维点,返回其最小外接矩形。根据函数原型,输入的数据可以是类型,包含1个以上的点;返回值是centersizeangle。其中size和angle。原创 2024-03-15 11:54:55 · 4198 阅读 · 1 评论 -
opencv中两个LSD直线检测算法的区别与应用
同样是Line Segment Detector(lsd)算法,opencv中提供了两种实现,并且位于不同的模块。createLSDDetector还是createLineSegmentDetector,请知悉原创 2024-02-28 15:30:15 · 1979 阅读 · 1 评论 -
c++之long long 和 \_\_int64
同理,cout 也会有类似的问题。第二种解释是 cout 在输出之前会把要输出的内容先存入缓存区,中间多了一个步骤,也会带来性能的降低。对于一般的 C++开发者来说,其实这个问题不那么要紧,因为在实际开发当中,绝大多数情况使用 32 位的 int 就足够应付了。很有可能导致同样的题目,同样的算法,别人通过了,但是我们却超时了的情况。又有一个问题,它们是 C 语言的标准输入输出方式,需要提供标识符来代表变量的类型,那么问题来了。因为在算法竞赛当中,尤其是当数据量很大的时候,读入和输出占据的时间是非常可观的。转载 2024-02-21 21:29:31 · 382 阅读 · 0 评论 -
使用Ceres-Sovler进行四元数求解优化:LocalParameterization->Manifold
使用Ceres-Sovler进行四元数LocalParameterization以及理解LocalParameterization是什么?代码示例原创 2021-02-28 18:06:31 · 1023 阅读 · 1 评论 -
C++睡眠函数:Windows平台下的Sleep函数和Linux平台的usleep函数
介绍了三个睡眠函数,分别在Windows、Linux和全平台可用。介绍了它们的时间单位和用法。原创 2023-12-31 11:40:40 · 2714 阅读 · 0 评论 -
使用openMVS库,在VS2022中启用c++17标准编译仍然报错
项目中引用了某些开源库(例如),编译时要求启用编译器对c++17的支持。没问题!大家都知道在下图所示的位置调整C++语言标准:但是,打开开关之后编译,依然报错:这可真是一个令人百思不得其解的错误啊。报错的文件是官方的头文件,双击之后跳转的错误位置也看不出个所以然。这下头大了。不过,之前编译openmvs库时,用的是同一版本的VS编译器,怎么就成功了呢?原创 2023-12-18 10:53:52 · 1690 阅读 · 1 评论 -
使用Open Scene Graph(OSG)库将现有PagedLOD模型增加一个平移量,并保存为记录子模型相对路径的模型
是Open Scene Graph(OSG)库中的一种LOD(Level of Detail)技术,用于管理和显示具有不同细节级别的场景数据。PageLOD模型通常用于处理大型地理空间数据,如地形或城市模型。它允许将场景分成多个页面(或块),每个页面可以包含不同级别的细节数据,以便根据观察者的位置和视野来动态加载和卸载这些页面,以提高渲染性能。PageLOD模型通常由多个文件组成,每个文件对应于一个页面或块,并包含该页面的不同细节级别的数据。原创 2023-11-08 11:34:22 · 1058 阅读 · 2 评论 -
C/C++使用GDAL库编程窍门之——通用可移植性库(Common Portability Library, CPL)
在代码中包含了和/// 默认文件名字符串的编码是UTF-8不支持中文路径,设置此行代码后支持中文路径// 获取当前exe全路径// 从输入字符串提取(文件夹)路径,xxx\yyy.tif提取为xxx// 获取文件扩展名,不带'.'.// 递归地创建文件夹,即如果父文件夹不存在,亦创建之。第二个参数是文件夹访问权限,默认给0755即可。原创 2023-09-03 15:57:09 · 798 阅读 · 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 · 1318 阅读 · 0 评论 -
使用CMake+vcpkg生成VS2022工程——以开源库openMVS为例
想在openMVS应用的基础上做一些改造,于是下载了其开源代码。为了改造它,首先要了解程序执行流程,要是能在VS里以debug模式来运行就好了!我们希望,最后的make编译在VS2022中进行,以便断点调试和修改源码重新编译。vcpkg的发展使我们的希望成真。原创 2023-05-22 20:24:35 · 1341 阅读 · 0 评论 -
AfxMessageBox的两种用法
函数声明如下:1.1 参数lpszText将显示在消息框的字符串。消息框的样式。有以下几类:一般没用。帮助的ID;若是0,将使用应用程序的默认帮助上下文。指向String Table中的字符串的唯一 ID。如果没有足够的内存显示消息框,则返回0;否则,返回下列值之一:如果消息框有 " 取消 " 按钮,按下键也将返回。如果消息框没有 " 取消 " 按钮,按 ESC 键不起作用。2.2 用法二:显示需要用户选择“是”“否”的对话框可以根据nRet的值判定用户点击了哪个按键。下面两个用法也同理。原创 2023-05-13 17:20:47 · 2833 阅读 · 0 评论 -
使用 /permissive- 编译器开关时变量名or被识别为关键字
VS2022已经默认开启对c++14的支持。并且,一般同时开启的还有开关。项目属性如下所示:然而,在许多早期代码中,函数名和变量名使用了c++14等新标准中的关键字,例如’or’,‘compl’,'not’等。在新的工程中引入这些代码,会导致编译时报错。VS会将函数形参解析为’or’关键字,等价于‘||’逻辑运算符。那么如何解决呢?原创 2023-04-14 16:42:35 · 547 阅读 · 0 评论 -
使用vcpkg时:applocal.ps1 不存在 请提供现有“.ps1”文件的路径,作为 -File 形式参数的一个实际参数
File 形式参数的实际参数“D:/vcpkg/scripts/buildsystems/msbuild/applocal.ps1”不存在。请提供现有“.ps1”文件的路径,作为 -File 形式参数的一个实际参数即说明找不到这个.ps1文件。原创 2023-04-10 11:03:44 · 1064 阅读 · 0 评论 -
在 Visual Studio 20xx 中设置 AVX、AVX2、AVX512、IA32、SSE 或 SSE2
在VS中启用AVX,SSE等SIMD指令集的方法转载 2023-03-12 17:29:49 · 5259 阅读 · 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 · 2246 阅读 · 0 评论 -
OpenSceneGraph找不到plugin的解决方案
OpenSceneGraph库(c++)使用时提示找不到plugin的解决方案;附上OSG库查找插件的方式,希望有助于理解原创 2023-03-04 15:44:09 · 1328 阅读 · 0 评论 -
MFC多文档在CFileView中获取文档指针
MFC多文档在CFileView中获取文档指针,想当然地调用GetActiveDocument竟然无效!竟是多文档的缘故……原创 2023-02-19 11:45:32 · 226 阅读 · 0 评论