MSVC
文章平均质量分 53
simple_whu
这个作者很懒,什么都没留下…
展开
-
Visual Studio编译代码时提示找不到dirent.h,no such file.
Visual Studio编译代码时提示找不到dirent.h,no such file.解决方法一:使用vcpkg安装dirent.h如果你已经安装vcpkg,那么一句命令就能解决问题:vcpkg install dirent:x64-windows解决方法二:自行新建文件如果你没有vcpkg或不想使用它,那么可以新建一个dirent.h,复制下面的内容,保存到其中即可。该内容来自github项目,与vcpkg安装dirent.h的完全一致:/* * Dirent interface fo原创 2024-07-20 18:55:40 · 744 阅读 · 0 评论 -
使用C++库OSG遍历多层次、PageLOD的osgb模型中的点云并保存
推荐使用vcpkg编译安装;或从下载编译好的库。原创 2024-07-19 11:20:11 · 698 阅读 · 0 评论 -
在VS2022中通过Nuget将vcpkg环境集成/卸载到c++项目
vcpkg是微软和C++社区维护的免费开源C/C++包管理器。利用它,可以一条命令编译安装用户所需的库;提供CMake配置文件;并且对于Windows开发者,在Visual Studio中集成后还可以自动链接静态库,非常方便易用。一般而言,开发者仅需要一个vcpkg环境,运行命令后,所有解决方案通用。然而对于某些开发工作,需要一个独立的环境来编译特定版本的库,因而需要新创建一个vcpkg环境,并在项目中集成。本文将介绍如何为某个解决方案集成特定的vcpkg环境,并正确卸载。原创 2024-07-18 17:46:26 · 686 阅读 · 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 · 493 阅读 · 0 评论 -
使用GDAL读取图像时报错:‘xxxx.JPG‘ not recognized as being in a supported file format.
若你的程序中在调用GDALOpen之前没有调用,先去把这句加上再说。如果继续报错,则表示当前你使用的gdal库不支持读取JPG图像格式。大概率是在编译GDAL时未添加对JPEG格式的支持。原创 2024-07-17 15:41:08 · 256 阅读 · 0 评论 -
使用GDAL(C++库)从末尾行开始向上读取图像数据
OpenCV等图像库默认的读取方式都是从第一行开始,逐行读取数据(自顶向下),填充到内存缓冲区;对于某些特殊应用,需要反行序读取(从末尾行读到起始行)的图像数据结果。GDAL提供了灵活的栅格数据读取方式RasterIO,下面介绍RasterIO的调用方式,以及如何利用它自底向上读取图像数据。原创 2024-07-17 15:40:41 · 963 阅读 · 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 · 487 阅读 · 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 · 618 阅读 · 1 评论 -
计算点集的最小外接矩形——OpenCV的minAreaRect函数
输入一系列二维点,返回其最小外接矩形。根据函数原型,输入的数据可以是类型,包含1个以上的点;返回值是centersizeangle。其中size和angle。原创 2024-03-15 11:54:55 · 2391 阅读 · 1 评论 -
c++之long long 和 \_\_int64
同理,cout 也会有类似的问题。第二种解释是 cout 在输出之前会把要输出的内容先存入缓存区,中间多了一个步骤,也会带来性能的降低。对于一般的 C++开发者来说,其实这个问题不那么要紧,因为在实际开发当中,绝大多数情况使用 32 位的 int 就足够应付了。很有可能导致同样的题目,同样的算法,别人通过了,但是我们却超时了的情况。又有一个问题,它们是 C 语言的标准输入输出方式,需要提供标识符来代表变量的类型,那么问题来了。因为在算法竞赛当中,尤其是当数据量很大的时候,读入和输出占据的时间是非常可观的。转载 2024-02-21 21:29:31 · 90 阅读 · 0 评论 -
使用Ceres-Sovler进行四元数求解优化:LocalParameterization->Manifold
使用Ceres-Sovler进行四元数LocalParameterization以及理解LocalParameterization是什么?代码示例原创 2021-02-28 18:06:31 · 454 阅读 · 1 评论 -
C++睡眠函数:Windows平台下的Sleep函数和Linux平台的usleep函数
介绍了三个睡眠函数,分别在Windows、Linux和全平台可用。介绍了它们的时间单位和用法。原创 2023-12-31 11:40:40 · 1960 阅读 · 0 评论 -
使用openMVS库,在VS2022中启用c++17标准编译仍然报错
项目中引用了某些开源库(例如),编译时要求启用编译器对c++17的支持。没问题!大家都知道在下图所示的位置调整C++语言标准:但是,打开开关之后编译,依然报错:这可真是一个令人百思不得其解的错误啊。报错的文件是官方的头文件,双击之后跳转的错误位置也看不出个所以然。这下头大了。不过,之前编译openmvs库时,用的是同一版本的VS编译器,怎么就成功了呢?原创 2023-12-18 10:53:52 · 1380 阅读 · 1 评论 -
使用Open Scene Graph(OSG)库将现有PagedLOD模型增加一个平移量,并保存为记录子模型相对路径的模型
是Open Scene Graph(OSG)库中的一种LOD(Level of Detail)技术,用于管理和显示具有不同细节级别的场景数据。PageLOD模型通常用于处理大型地理空间数据,如地形或城市模型。它允许将场景分成多个页面(或块),每个页面可以包含不同级别的细节数据,以便根据观察者的位置和视野来动态加载和卸载这些页面,以提高渲染性能。PageLOD模型通常由多个文件组成,每个文件对应于一个页面或块,并包含该页面的不同细节级别的数据。原创 2023-11-08 11:34:22 · 701 阅读 · 2 评论 -
C/C++使用GDAL库编程窍门之——通用可移植性库(Common Portability Library, CPL)
在代码中包含了和/// 默认文件名字符串的编码是UTF-8不支持中文路径,设置此行代码后支持中文路径// 获取当前exe全路径// 从输入字符串提取(文件夹)路径,xxx\yyy.tif提取为xxx// 获取文件扩展名,不带'.'.// 递归地创建文件夹,即如果父文件夹不存在,亦创建之。第二个参数是文件夹访问权限,默认给0755即可。原创 2023-09-03 15:57:09 · 604 阅读 · 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 · 1204 阅读 · 0 评论 -
使用CMake+vcpkg生成VS2022工程——以开源库openMVS为例
想在openMVS应用的基础上做一些改造,于是下载了其开源代码。为了改造它,首先要了解程序执行流程,要是能在VS里以debug模式来运行就好了!我们希望,最后的make编译在VS2022中进行,以便断点调试和修改源码重新编译。vcpkg的发展使我们的希望成真。原创 2023-05-22 20:24:35 · 1159 阅读 · 0 评论 -
AfxMessageBox的两种用法
函数声明如下:1.1 参数lpszText将显示在消息框的字符串。消息框的样式。有以下几类:一般没用。帮助的ID;若是0,将使用应用程序的默认帮助上下文。指向String Table中的字符串的唯一 ID。如果没有足够的内存显示消息框,则返回0;否则,返回下列值之一:如果消息框有 " 取消 " 按钮,按下键也将返回。如果消息框没有 " 取消 " 按钮,按 ESC 键不起作用。2.2 用法二:显示需要用户选择“是”“否”的对话框可以根据nRet的值判定用户点击了哪个按键。下面两个用法也同理。原创 2023-05-13 17:20:47 · 2305 阅读 · 0 评论 -
使用 /permissive- 编译器开关时变量名or被识别为关键字
VS2022已经默认开启对c++14的支持。并且,一般同时开启的还有开关。项目属性如下所示:然而,在许多早期代码中,函数名和变量名使用了c++14等新标准中的关键字,例如’or’,‘compl’,'not’等。在新的工程中引入这些代码,会导致编译时报错。VS会将函数形参解析为’or’关键字,等价于‘||’逻辑运算符。那么如何解决呢?原创 2023-04-14 16:42:35 · 468 阅读 · 0 评论 -
使用vcpkg时:applocal.ps1 不存在 请提供现有“.ps1”文件的路径,作为 -File 形式参数的一个实际参数
File 形式参数的实际参数“D:/vcpkg/scripts/buildsystems/msbuild/applocal.ps1”不存在。请提供现有“.ps1”文件的路径,作为 -File 形式参数的一个实际参数即说明找不到这个.ps1文件。原创 2023-04-10 11:03:44 · 870 阅读 · 0 评论 -
在 Visual Studio 20xx 中设置 AVX、AVX2、AVX512、IA32、SSE 或 SSE2
在VS中启用AVX,SSE等SIMD指令集的方法转载 2023-03-12 17:29:49 · 3577 阅读 · 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 · 1775 阅读 · 0 评论 -
OpenSceneGraph找不到plugin的解决方案
OpenSceneGraph库(c++)使用时提示找不到plugin的解决方案;附上OSG库查找插件的方式,希望有助于理解原创 2023-03-04 15:44:09 · 966 阅读 · 0 评论 -
MFC多文档在CFileView中获取文档指针
MFC多文档在CFileView中获取文档指针,想当然地调用GetActiveDocument竟然无效!竟是多文档的缘故……原创 2023-02-19 11:45:32 · 170 阅读 · 0 评论 -
使用AfxGetApp()->GetMainWnd()而不是AfxGetMainWnd()使得MFC主程序接收辅助线程发送的消息
MFC辅助线程向主线程窗口发送消息使得MFC主窗口接收辅助线程发送的消息AfxGetMainWnd()在辅助线程中得不到主窗口指针原创 2022-11-29 18:52:20 · 1182 阅读 · 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 · 2606 阅读 · 1 评论 -
Linux系统中获取临时文件路径 `GetTempPath`和`GetTempFileName`函数
为了在Linux系统中获得WIN API的和函数的功能,我们要在Linux下实现`GetTempPath`和`GetTempFileName`函数。原创 2022-10-17 15:04:21 · 1046 阅读 · 0 评论 -
小议SSH远程登录Linux终端与VS2022远程编译
login模式下使用bash,会依次读取~/.bash_profile,~/.bash_login和~/.profile,按次序读到其中一个就跳过其余的。non-login模式下使用bash,会读取~.bashrc。原创 2022-09-22 09:10:36 · 792 阅读 · 0 评论 -
Visual Studio C++项目的头文件搜索顺序
编译器按以下顺序搜索目录:本地相对路径;附加包含目录指定的路径;VC++下的包含目录。原创 2022-09-08 11:01:55 · 1751 阅读 · 0 评论 -
C++使用GDAL为tiff图像写入WKT字符串表达的空间参照和投影坐标系信息
WKT(Well-Known Text)是一种文本标记语言,其一种重要用途就是表达地理坐标信息。本文介绍了使用广受欢迎的GDAL库进行tiff文件的地理参考信息更新方法。原创 2022-08-26 16:53:13 · 1139 阅读 · 0 评论 -
MFC为多文档打开按钮添加文件扩展过滤时的注意事项
MFC多文档程序设置打开按钮的文件类型过滤的注意事项String Table中括号内的是显示在文件过滤器中的文本内容,不会影响文件过滤结果;而括号外的是实际过滤的扩展名。可见,括号外的扩展名序列中,有*.bbi;*.tif的设置,是错误的。貌似符合平时的使用习惯,实际上会导致程序单击打开即崩溃。原创 2022-08-22 17:16:25 · 239 阅读 · 0 评论 -
无需破解,官网安装Visual Studio 2013社区版
官网安装VS2013,无需破解,附带卸载时提示原创 2022-08-01 11:01:37 · 3827 阅读 · 0 评论 -
用VS2013编译带boost库程序时提示 fatal error C1001: 编译器中发生内部错误
VS2013编译带boost库的工程时遇到 “mp_defer.hppfatalerrorC1001编译器中发生内部错误”转载 2022-08-01 11:24:00 · 615 阅读 · 0 评论 -
VS IDE: warning LNK4098: 默认库“msvcrt.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
warning LNK4098: 默认库“msvcrt.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:libraryVC中有4个CRT链接库版本:libcmt.lib: static CRT link library for a release build (/MT)libcmtd.lib: static CRT link library for a debug build (/MTd)msvcrt.lib: import library for the release DLL翻译 2022-05-16 16:21:28 · 925 阅读 · 0 评论 -
Visual Studio的c++调试正确显示所读取的utf-8编码的字符串
Visual Studio的c++调试中正确显示所读取的utf-8编码的字符串如果Visual C++的工程属性中设置了“多字节字符集”,那么程序读取utf-8编码的文件中的中文时,保存在字符串中,想在监视窗口查看字符串内容时,可能会发现内容是乱码的。解决方案是,在字符串变量后添加“,s8”,即可正确显示中文内容,如下图所示。更多内容请参考官方说明...原创 2021-03-17 22:27:59 · 3928 阅读 · 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 · 981 阅读 · 0 评论 -
VS2019跨平台编译linux项目遇到g++错误cannot specify -o with -c, -S or -E with multiple files
g++ : error : cannot specify -o with -c, -S or -E with multiple files实际上这个错误是由于,要生成两个或更多相同名称的.o文件,产生了冲突。所以检查一下工程中源文件有没有重复添加的情况,如果有就只保留其中一个,即可解决该问题。例如,下面的两图是同一个项目中出现了两个stdafx.cpp的情况:保留其中一个,把另一个移除或者设置为不参与生成即可。...原创 2021-08-29 15:52:43 · 3719 阅读 · 1 评论 -
CUDA11.6+VS2022 编译报错‘cub is ambiguous’
找到工程中的using namespace thrust;将其注释掉,然后重新编译。若提示identifier "xxx" is undefined就在"xxx"前面加上thrust::。例如原创 2022-04-02 14:56:11 · 908 阅读 · 0 评论 -
在VS2022 MFC程序中调用CUDA代码
在VS2022 MFC程序中调用CUDA函数Pre: 安装好CUDA后VS中该有的效果首先,假设你已经安装好了CUDA,并且成功集成在VS2022中(即新建项目有CUDA项目的选项,如下图所示)。你已经有一个MFC项目和一份CUDA项目,且都可以成功编译运行。目标是,在MFC项目中调用CUDA项目中的函数:例如,想在MFC程序中点击某个按钮以调用GPU处理程序。那么,除了新增一个按钮控件并添加处理程序之外,还要将CUDA函数集成到MFC项目中。将CUDA函数集成到MFC项目中1. 为项目添加原创 2022-04-24 17:38:01 · 2005 阅读 · 2 评论 -
nvcc编译error: asm operand type size(*) does not match type/size implied by constraint ‘r’
报错信息error: asm operand type size(*) does not match type/size implied by constraint ‘r’出错原因:由于项目包含了gpu代码和cpu代码,nvcc编译gpu代码的时候默认是编译64位平台结果,然而cpu代码编译时可能使用了32位的编译器(如下图红框内所示)。因此,为了解决问题,使用64位的cl.exe或gcc即可。即,选择图示的命令行入口,再运行编译指令即可。...原创 2022-04-21 12:16:40 · 1205 阅读 · 1 评论