问题标签 [visual-c++-2017]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio - 在 Visual Studio 中保存和调试图像
我正在Visual Studio 2017中用C++编写一个复杂的算法,我想知道调试器停止在中断点后是否可以保存完整状态的图像,然后随意返回为如果我从一开始就运行代码。
原因是到那时进行初始化需要很多时间。
lambda - 为什么捕获 unique_ptr 的 lambda 不能在容器中使用
为什么无法将捕获 unique_ptr 的 lamda 推送到 的容器中std::function
?这是正确的标准行为还是 VC 问题?有没有办法解决这个问题?
VC 编译器错误(Visual Studio v15.8.9):
c++ - 在 C++ 2017 中将 const 转换为非 const 指针并对其进行修改时,编译器将这两个值存储在哪里?
在 Visual C++ 2017 中,在尝试违反规则时会发生什么时,我发现如果我将 const int 强制转换为 int *,然后将值重新分配给 int *,调试器将更改 const 的值,但运行时执行不会。
无论我是在调试模式下运行它还是作为已发布的可执行文件运行,都会发生这种情况。我知道它是未定义的,但我正在寻找有关这些值所在位置的见解,因为它们似乎是相同的位置。
这两个值存储在哪里?这就像有一个桶同时装满两种不同的液体。
我知道这是未定义的行为,但我想知道是否有人可以在内部阐明正在发生的事情。
c# - 如何解决运行时异常在“Esri.ArcGISRuntime.UI.Controls.MapView”类型上调用构造函数
我正在使用 Visual Studio 2015 中的 ArcGISRuntime SDK(版本 100.4.0)开发 GIS Windows 窗体应用程序。当我在部署机器(没有 Visual Studio 环境的 Windows 10 机器)中部署应用程序 exe 时,应用程序工作正常。之后我转移到 Visual Studio 2017。该应用程序在开发人员机器中正常运行。但是,当我在部署机器中部署 exe(没有 VS2017 设置)时,它会抛出以下异常:
'调用与指定绑定约束匹配的'Esri.ArcGISRuntime.UI.Controls.MapView'类型的构造函数引发异常。
之后,我浏览了以下链接:
它显示以下要求对于 ArcGIS 相关应用程序部署是强制性的:
视窗 10
Microsoft .NET Framework 4.6.1 或更高版本
适用于 Visual Studio 2017 的 Microsoft Visual C++ Redistributable
我的部署机器满足前两个要求。所以我在我的部署机器上安装了 Microsoft Visual C++ Redistributable for Visual Studio 2017。但是,问题仍然没有解决。
请帮我解决这个问题。
c++ - 如何禁用宏中的警告
我正在查看一些有关无法访问代码的自定义代码。简而言之,我有一个宏将某些代码标记为逻辑上不可访问。这可以用作:
同样,我试图在编译器已经知道代码无法访问的位置重用这个宏。
也就是说,在某些情况下,MSVC 仍然会在无法访问的宏中对自定义处理给出无法访问的代码警告。简化版本如下所示:
根据我从[微软文档](https://docs.microsoft.com/en-us/cpp/preprocessor/pragma-directives-and-the-pragma-keyword?view=vs-2019)中了解到的信息,我应该能够__pragma
在调用我的宏时使用带有此警告的 push/pop 来禁用此警告。(它甚至有一个这样做的例子)
这里应该改变什么来抑制 MSVC 中的警告?
unhandled-exception - Visual Studio 2017 中未处理的异常:内存位置 0x0023F6A0 处的 unsigned long
我正在尝试使用 VC++ 在 Visual Studio 2017 中确定运行应用程序的用户帐户是否属于 Admin 组。但是,当我在 IDE 中运行该程序时,它会在给定函数的末尾停止,并出现异常对话框,该对话框显示“Target.exe 中 0x7697B022 处的未处理异常:Microsoft C++ 异常:内存位置 0x00CFF638 处的无符号长。发生”。但是我在 IDE 中单击“继续”,执行继续并完成程序执行。
我想知道我在做什么错误,应该做些什么来消除这个异常。
c++ - 为什么 char{} 和 char() 用作 char* 参数的临时变量?
在 Visual C++ 2017(带有/std:c++14
或带有/std:c++17
)中,以下代码有效:
我不明白为什么它有效。
显然,以下内容也将起作用(如预期的那样):
编译器如何将类型推断(或转换)char
为char*
、 何时char{}
或char()
用作参数?
现在,如果我同时拥有char
和char*
重载,它的工作原理不会出现任何关于歧义的错误/警告:
为什么编译器可以使用char{}
for TakePtr(char*)
?为什么在选择更好的版本时不给出警告/错误?这种行为势必会破坏现有代码。
当然,编译器不满意:
windows-10 - #include-ing DirectXMath 和 DirectXTex 时的重新定义
使用VS2018Pro、Windows10、
在跨项目文件拉入 DirectXTex.h、DirectXMath.h 和 DirectXCollision.h 时,我遇到了许多重新定义编译错误。
DirectXMath 和 DirectXCollision 是 Win10SDK 标头的一部分,我从 github 存储库中提取 DirectXTex 并将其放在我的项目文件夹的本地。
在我的代码库中,我需要在各种文件中包含 DirectXTex.h、DirectXMath.h 和 DirectXCollision.h 标头,但是我在 DirectX 命名空间中遇到了许多重新定义错误和重复项。我知道我可能必须先包含一个(我已经尝试了许多变体,例如 DirectXTex 引入了 DirectXMath),但我无法编译。
有没有人知道在项目文件中提取这些包含的正确顺序?
c++ - Visual Studio 专业版 2017 链接器
我最近在 Visual Studio 2017 下将我的项目从 C++11 转换为 C++17,并立即开始遇到链接器问题,如下所示:
LINK : 32 位链接器 (C:\Program Files (x86)\Microsoft VisualStudio\2017\Professional\VC\Tools\MSVC\14.16.27023\bin\HostX86\x86\link.exe) 无法执行内存映射文件`C:\Git\Raptor\temp\MsBuild\Output\Debug_v141\Rev2Aux_Debug.lib' 上的 I/O 并将重新启动与 64 位链接器的链接以获得更好的吞吐量 7>LINK:未能找到 64 位%PATH% 上的链接器,继续当前链接;请考虑切换到 64 位链接器
本质上,它是什么,构建器尝试对较大的 Lib 使用 64 位链接器,但在其中找不到它,%PATH%
因此它求助于 32 位链接器,并在遇到此问题的每个场合都这样做, 经常这样。这大大减慢了我的构建时间。
现在,关于我的 VisualStudio 环境和我的 Windows 版本的一切都是 64 位的,所以我不知道还能做什么。
有什么解决办法?
自从转换为 C++17 以来,我注意到的另一个问题是 VisualStudio 编辑器和调试器的响应速度有多慢。例如,在调试会话期间在窗口之间切换需要很长时间。
c++ - 正确使用 RDRAND(片上生成器)作为 std::random_device 与 Visual C++ 的随机库
我希望能够在可用时使用硬件随机数生成器,并且无论英特尔或 AMD 运行代码如何,都可以使用 C++ 随机库:
根据这篇文章,entropy()
应该在没有 RDRAND 的 cpu 上返回 0,例如 i7-2670qm ivy 桥(我在其上测试过 - RDRAND 第一次出现在其继任者 Sandy Bridge 中),但在 Visual Studio 中始终为 32如此处所述。有人建议缺少随机设备可能会导致operator()
抛出异常,但这也不会发生。
例如,可以使用内在函数int _rdrand32_step (unsigned int* val)
,但只能从均匀分布中提取,我需要能够利用 C++ 随机库中可用的分布。
此外,代码应该使用 AMD cpu 上的硬件生成器。
random
在 Visual Studio(2017、2019)中将硬件随机数生成器(RDRAND)与 C++ 库一起使用的正确方法是什么?