问题标签 [visual-c++-2015]

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.

0 投票
1 回答
196 浏览

c++ - MSVC 将仅移动结构参数解释为指针

我有一个简单的单成员结构,其中删除了复制构造/分配和默认移动构造/分配。我试图通过值将这些结构之一传递给函数并返回成员 - 非常简单。

问题是当用 MSVC 编译时,这个函数会崩溃。

查看反汇编,似乎当复制构造函数被删除时,MSVC 尝试解释x为好像它是 aNoCopy*并且随后的成员读取导致分段错误。

这是一个godbolt示例,gcc和clang供参考:https ://godbolt.org/z/jG7kIw

请注意,gcc 和 clang 的行为都符合预期。另请注意,这在优化和未优化的版本中都会发生,并且似乎会影响 MSVC 2015 和 2017。

作为参考,我正在使用 Visual Studio Professional 2015(14.0.25431.01 更新 3)在我的机器上编译 - 我主要测试 x64 版本。我的崩溃重现平台工具集设置为 v140。

所以我的问题是:对此是否有任何合理的解释,或者我是否正在查看编译器错误。

编辑:我在这里提交了一个错误报告

编辑#2:如果像我一样,您遇到了类似的问题并且无法轻松更新 VS -手动定义移动构造函数/赋值运算符而不是使用似乎= default会导致 MSVC 在调用站点吐出正确的代码并避免迷恋;撞车;崩溃。这是一个新的神螺栓

出于这个原因,像 std::unique_ptr 这样的东西似乎没有受到影响。结构大小似乎也是一个因素。

0 投票
0 回答
464 浏览

installation - 如何在环境变量windows中添加visual c++ 2015的地址?

我在 Windows 7 上安装了 Visual c++ 2015。我遇到了以下错误:

请指导我

0 投票
1 回答
36 浏览

linker - Q 在调试版本中使用发布库

我们从合作伙伴那里收到一个现成的编译库,仅作为发布版本。正如预期的那样,它在我们的发布版本中运行良好,但在调试版本中使用它时也运行良好(用于我们的内部测试或调试会话)

现在发生了一些变化,并且最新版本的库在调试版本中不再工作我得到错误

我明白为什么现在会发生,但我不明白为什么在旧版本中没有发生。旧版本也设置了错误的 RuntimeLibrary 但不知何故它并没有影响链接器......?(我使用DUMPBIN来查找标志)

0 投票
0 回答
24 浏览

c++ - 如何正确检查 FileStreamWriter 是否正在使用?

我正在使用 System::IO::StreamWriter。我的目的是检查正在使用的文件是否打开,然后关闭它。

检查文件是否正在使用的正确方法是什么。我不断收到 System.NullReferenceException 与下面的代码。

0 投票
1 回答
803 浏览

visual-c++ - 如何使用 MSVC (Microsoft Visual C++) 2015 构建 Google Crashpad?

Google Crashpad 声称可以使用 MSVC 2015 和 MSVC 2017 进行编译(在撰写本文时)。

但是,Google Crashpad 依赖于mini_chromium,这是一个明确指示需要 MSVC 2017 或更高版本的 chromium 项目。

我尝试按照本指南、最新的 Crashpad 提交和depot_tools 编译 Crashpad。我可以在 MSVC 2017 上成功编译,但是在使用 MSVC 2015 和 mini_chromium 时会收到大量编译器错误——我需要我的客户端软件动态链接到使用 MSVC 2015 编译的库。

这个 StackOverflow 问题使我能够将 Crashpad 构建到动态库中。但我只能在 MSVC 2017 中这样做。当我稍后尝试将 MSVC 2015 编译的软件与 MSVC 2017 中的 Crashpad 构建链接时,我收到此错误

0 投票
0 回答
49 浏览

windows - 需要对其他 Windows 用户通过 VC++ 应用程序创建的 .log 文件授予读写权限

我在 VC++ 中有应用程序。它在应用程序会话结束后启动和修改日志文件时创建 test.log 文件。

我的问题是让两个普通的 Windows 用户 test1 和 test2 都没有管理员权限。

1]当我使用test1用户登录windows并启动我的应用程序时。如果用户不进行任何操作,应用程序会话将在 10 分钟后结束。当应用程序结束时,我在“C:\ProgramData\MyApplication\datalog.log”位置创建 datalog.log 文件。

2]我注销Windows test1用户

3]我在同一个窗口上登录 test2 用户并运行我的应用程序,这次当会话结束时,我的应用程序崩溃并显示如下错误消息:

问题签名:问题事件名称:BEX 应用程序名称:MyApplication.exe 应用程序版本:1.0.0.0 应用程序时间戳:5d60cf28 故障模块名称:ucrtbase.DLL 故障模块版本:10.0.10240.16390 故障模块时间戳:55a5bf73
异常偏移量:0007c3b4 异常代码: c0000417 异常数据:00000000 操作系统版本:6.1.7601.2.1.0.256.48

为了解决这个问题,我实现了以下功能

从以下调用

fprintf( stream, "%s %s\n", buff, s );在调试时,我的应用程序在此行没有任何消息而崩溃。

当我尝试手动修改文件时,它会给出访问权限权限消息。

我需要为 datalog.log 文件提供读/写访问权限,而不管用户在 Windows 上登录和创建文件的用户如何。

操作系统是windows 7

0 投票
0 回答
728 浏览

c++ - atlcom.h:3448: 错误: C2259: 'ATL::CComContainedObject'

由于更新了库,我必须将大型 c++ 程序从 VS2010 迁移到 VS2015。在VS2010中全部编译OK。VS2015的编译器现在在微软自己的atlcom.h中显示错误

我没有机会放弃 ATL 的东西,因为我的 DLL 是依赖于 ATL 的主要程序的扩展(并且在 VS2015 中编译......)。

这是 cl 2015 的错误消息:

错误指向atlcom.h(VS2015的编译器)的第3448行:

CComContainedObject 的定义是 atlcom.h 的第 3277 行:

我的课是:

有任何想法吗?你真的很受欢迎。

0 投票
2 回答
70 浏览

c++ - VC++ 2015 错误:“涉及具有内部链接的对象的表达式不能用作非类型参数”

以下示例代码可以在 VC++ 2019、clang++ 和 g++ 中编译,但不能在 VC++ 2015 中编译。

VC++ 2015 有什么解决方法吗?我假设代码符合要求,但 VC++ 2015 有一个错误,该错误已在 VC++ 2019 中修复。我会迁移到 VC++ 2019,但我的公司是在 VC++ 2015 中构建的。

0 投票
0 回答
445 浏览

mysql - Microsoft Visual C++ Redistributable setup 失败未指定错误 [0x80240017]

我正在尝试在我的电脑中设置 Microsoft Visual C++ 2015,因为根据在线说明,没有它我无法安装 MYSQL。但是,它给了我一个未指明的错误。这是我的日志文件。帮助将不胜感激。

39]i100:检测开始,10 个包 [1690:1340][2021-02-12T20:42:39]i000:文件搜索:windows_uCRT_DetectKey,未找到路径:C:\Windows\system32\ucrtbase.dll [1690: 1340][2021-02-12T20:42:39]i000:文件搜索:windows_uCRT_DetectKeyExists,未找到路径:C:\Windows\system32\ucrtbase.dll [1690:1340][2021-02-12T20:42:39 ]i000:将数值变量 'windows_uCRT_DetectKeyExists' 设置为值 0 [1690:1340][2021-02-12T20:42:39]i052:条件 '(VersionNT = v6.3 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10 .0.10240.0)' 评估为假。[1690:1340][2021-02-12T20:42:39]i052:条件 '(VersionNT = v6.3 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)'评估为假。[1690:1340][2021-02-12T20:42:39]i052:条件' (VersionNT = v6.2 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' 评估为假。[1690:1340][2021-02-12T20:42:39]i052:条件'(VersionNT = v6.2 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)'评估为假。[1690:1340][2021-02-12T20:42:39]i052:条件 '(VersionNT = v6.1 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)'评估为假。[1690:1340][2021-02-12T20:42:39]i052:条件 '(VersionNT = v6.1 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)'评估为假。[1690:1340][2021-02-12T20:42:39]i052: 条件'(VersionNT = v6. 0 AND NOT VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)' 评估为假。[1690:1340][2021-02-12T20:42:39]i052:条件 '(VersionNT = v6.0 AND VersionNT64) AND (windows_uCRT_DetectKeyExists AND windows_uCRT_DetectKey >= v10.0.10240.0)'评估为假。[1690:1340][2021-02-12T20:42:39]i101:检测到的包:vcRuntimeMinimum_x64,状态:不存在,缓存:无 [1690:1340][2021-02-12T20:42:39]i101:检测到的包:vcRuntimeAdditional_x64,状态:不存在,缓存:无[1690:1340] [2021-02-12T20:42:39]i101:检测到的包:Windows81_x86,状态:不存在,缓存:无[1690:1340] [2021-02- 12T20:42:39]i101:检测到的包:Windows81_x64,状态:不存在,缓存:无 [1690:1340][2021-02-12T20:42:39]i101:检测到的包:Windows8_x86,状态:不存在,缓存:无[1690: 1340][2021-02-12T20:42:39]i101:检测到的包:Windows8_x64,状态:不存在,缓存:无 [1690:1340][2021-02-12T20:42:39]i101:检测到的包:Windows7_MSU_x86,状态:不存在,缓存:无 [1690:1340][2021-02-12T20:42:39]i101:检测到的包:Windows7_MSU_x64,状态:不存在,缓存:无 [1690:1340][2021-02-12T20:42 :39]i101:检测到的包:WindowsVista_MSU_x86,状态:不存在,缓存:无 [1690:1340][2021-02-12T20:42:39]i101:检测到的包:WindowsVista_MSU_x64,状态:不存在,缓存:无 [1690: 1340][2021-02-12T20:42:39]i052:条件 'VersionNT64 >= v6.0 OR (VersionNT64 = v5.2 AND ServicePackLevel >= 1)' 评估为真。[1690:1340][2021-02-12T20:42:39]i199:检测完成,结果:0x0 [1690:1340][2021-02-12T20:42:42]i200:计划开始,10 个包,操作:安装 [1690:1340][2021-02-12T20:42:42]i052:条件 ' (VersionNT64)' 评估为真。[1690:1340][2021-02-12T20:42:42]i000:将字符串变量 'WixBundleRollbackLog_vcRuntimeMinimum_x64' 设置为值 'C:\Users\PCADMI~1\AppData\Local\Temp\dd_vcredist_amd64_20210212204238_000_vcRuntime[Minimum_x61_rollback'16.x64_rollback ][2021-02-12T20:42:42]i000:将字符串变量 'WixBundleLog_vcRuntimeMinimum_x64' 设置为值 'C:\Users\PCADMI~1\AppData\Local\Temp\dd_vcredist_amd64_20210212204238_000_vcRuntimeMinimum_x64.log' [1690:1340] [2] 02-12T20:42:42]i052:条件 '(VersionNT64)' 评估为真。[1690:1340][2021-02-12T20:42:42]i000:将字符串变量 'WixBundleRollbackLog_vcRuntimeAdditional_x64' 设置为值 'C:\Users\PCADMI~1\AppData\Local\Temp\dd_vcredist_amd64_20210212204238_001_vcRuntime [Additional_x64_rollback' 1340][2021-02-12T20:42:42]i000:将字符串变量 'WixBundleLog_vcRuntimeAdditional_x64' 设置为值 'C:\Users\PCADMI~1\AppData\Local\Temp\dd_vcredist_amd64_20210212204238_001_vcRuntimeAdditional_x64.log' [20] [16901] [16901]3 -02-12T20:42:42]i052:条件 'VersionNT = v6.3 AND NOT VersionNT64' 评估为假。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:Windows81_x86 [1690:1340][2021-02-12T20:42:42]i052:条件'VersionNT = v6.3 AND VersionNT64' 评估为假。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:Windows81_x64 [1690:1340][2021-02-12T20:42:42]i052:条件'VersionNT = v6.2 AND NOT VersionNT64' 评估为假。[1690:1340][2021-02-12T20:42:42]w321: 在没有依赖提供程序的包上跳过依赖注册:Windows8_x86 [1690:1340][2021-02-12T20:42:42]i052:条件“VersionNT = v6.2 AND VersionNT64”评估为假。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:Windows8_x64 [1690:1340][2021-02-12T20:42:42]i052:条件'VersionNT = v6.1 AND NOT VersionNT64' 评估为假。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:Windows7_MSU_x86 [1690:1340][2021-02-12T20:42:42]i052:条件'VersionNT = v6.1 AND VersionNT64' 评估为真。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:Windows7_MSU_x64 [1690:1340][2021-02-12T20:42:42]i052:条件' VersionNT = v6.0 AND NOT VersionNT64' 评估为假。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:WindowsVista_MSU_x86 [1690:1340][2021-02-12T20:42:42]i052:条件'VersionNT = v6.0 AND VersionNT64' 评估为假。[1690:1340][2021-02-12T20:42:42]w321:在没有依赖提供程序的包上跳过依赖注册:WindowsVista_MSU_x64 [1690:1340][2021-02-12T20:42:42]i201:计划的包: vcRuntimeMinimum_x64,状态:不存在,默认请求:存在,请求:存在,执行:安装,回滚:卸载,缓存:是,取消缓存:否,依赖项:寄存器 [1690:1340][2021-02-12T20:42:42 ]i201:计划包:vcRuntimeAdditional_x64,状态:不存在,默认请求:存在,请求:存在,执行:安装,回滚:卸载,缓存:无 [1690:1340][2021-02-12T20:42:42]i299:计划完成,结果:0x0 [1690:1340][2021-02-12T20:42:42]i300:应用开始 [14EC:0E60] [2021-02-12T20:42:46]i360:创建系统还原点。[14EC:0E60][2021-02-12T20:43:02]i361:创建了系统还原点。[14EC:0E60][2021-02-12T20:43:02]i370:会话开始,注册密钥:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{2cbcedbb-f38c-48a3-a3e1-6c6fd821a7f4},选项:0x7,禁用恢复:否 [14EC:0E60][2021-02-12T20:43:02]i000:缓存包来自:'C:\Users\PCADMI~1\AppData\Local\Temp{2cbcedbb-f38c-48a3-a3e1-6c6fd821a7f4 }.be\VC_redist.x64.exe' 到:'C:\ProgramData\Package Cache{2cbcedbb-f38c-48a3-a3e1-6c6fd821a7f4}\VC_redist.x64.exe' [14EC:0E60][2021-02-12T20: 43:02]i320:注册捆绑依赖提供者:{2cbcedbb-f38c-48a3-a3e1-6c6fd821a7f4},版本:14.0.24123。0 [14EC:0E60][2021-02-12T20:43:02]i371:更新会话,注册密钥:SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall{2cbcedbb-f38c-48a3-a3e1-6c6fd821a7f4},恢复:活动,重新启动:否,禁用恢复:否 [14EC:0DE8][2021-02-12T20:43:05]i304:已验证现有有效负载:vcRuntimeMinimum_x64 路径:C:\ProgramData\Package Cache.unverified\vcRuntimeMinimum_x64。[14EC:0DE8][2021-02-12T20:43:05]i305:已验证获取的有效负载:vcRuntimeMinimum_x64 在路径:C:\ProgramData\Package Cache.unverified\vcRuntimeMinimum_x64,移动到:C:\ProgramData\Package Cache{FDBE9DB4 -7A91-3A28-B27E-705EF7CFAE57}v14.0.24123\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi。[14EC:0DE8][2021-02-12T20:43:06]i304:已验证现有有效负载:cab5046A8AB272BF37297BB7928664C9503 位于路径:C:\ProgramData\Package Cache。未经验证\cab5046A8AB272BF37297BB7928664C9503。[14EC:0DE8][2021-02-12T20:43:06]i305:已验证获取的有效负载:cab5046A8AB272BF37297BB7928664C9503 位于路径:C:\ProgramData\Package Cache.unverified\cab5046A8AB272BF37297BB7928664C9503,移至:C:\ProgramData\ProgramDataPackageCache -7A91-3A28-B27E-705EF7CFAE57}v14.0.24123\packages\vcRuntimeMinimum_amd64\cab1.cab。[14EC:0DE8][2021-02-12T20:43:06]i304:已验证现有有效负载:vcRuntimeAdditional_x64,路径:C:\ProgramData\Package Cache.unverified\vcRuntimeAdditional_x64。[14EC:0DE8][2021-02-12T20:43:06]i305:已验证获取的有效负载:vcRuntimeAdditional_x64 在路径:C:\ProgramData\Package Cache.unverified\vcRuntimeAdditional_x64,移动到:C:\ProgramData\Package Cache{21134089 -9B59-34C8-BE11-929D26AD5207}v14.0.24123\packages\vcRuntimeAdditional_amd64\vc_runtimeAdditional_x64.msi。[14EC:0DE8][2021-02-12T20:43:06]i304:已验证现有有效负载:cab2C04DDC374BD96EB5C8EB8208F2C7C92 位于路径:C:\ProgramData\Package Cache.unverified\cab2C04DDC374BD96EB5C8EB8208F2C7C92。[14EC:0DE8][2021-02-12T20:43:06]i305:已验证获取的有效负载:cab2C04DDC374BD96EB5C8EB8208F2C7C92 在路径:C:\ProgramData\Package Cache.unverified\cab2C04DDC374BD96EB5C8EB8208F2C7C92,移动到:C:\ProgramData\9PackageCache{113408\9PackageCache22 -9B59-34C8-BE11-929D26AD5207}v14.0.24123\packages\vcRuntimeAdditional_amd64\cab1.cab。[14EC:0DE8][2021-02-12T20:43:06]i304:已验证现有有效负载:Windows7_MSU_x64,路径为:C:\ProgramData\Package Cache.unverified\Windows7_MSU_x64。[14EC:0DE8][2021-02-12T20:43:06]i305:已验证获取的有效负载:Windows7_MSU_x64 位于路径:C:\ProgramData\Package Cache.unverified\Windows7_MSU_x64,移动到:C: \ProgramData\包缓存\54050A5F8AE7F0C56E553F0090146C17A1D2BF8D\packages\Patch\x64\Windows6.1-KB2999226-x64.msu。[14EC:0E60][2021-02-12T20:43:06]i301:应用执行包:vcRuntimeMinimum_x64,操作:安装,路径:C:\ProgramData\Package Cache{FDBE9DB4-7A91-3A28-B27E-705EF7CFAE57}v14。 0.24123\packages\vcRuntimeMinimum_amd64\vc_runtimeMinimum_x64.msi,参数:'MSIFASTINSTALL="7" NOVSUI="1"' [1690:1340][2021-02-12T20:43:15]i319:应用执行包:vcRuntimeMinimum_x64,结果: 0x0,重新启动:无 [14EC:0E60][2021-02-12T20:43:15]i325:在包提供程序上注册依赖项:{2cbcedbb-f38c-48a3-a3e1-6c6fd821a7f4}:Microsoft.VS.VC_RuntimeMinimumVSU_amd64,v14, package :vcRuntimeMinimum_x64 [14EC:0E60][2021-02-12T20:43:15]i301:应用执行包:vcRuntimeAdditional_x64,操作:安装,路径:C:

0 投票
0 回答
27 浏览

python - 使用 pyinstaller 将 py 转换为 exe 后导入 DLL 失败

我在 tkinter 中制作了一个桌面应用程序,它运行正常,但是当使用 pyinstaller 将项目转换为 Window exe 时它不起作用。它给出了导入错误 在此处输入图像描述

现在,当我安装Microsoft Visual c++ 2015 Redistributable时,这个错误得到了解决,但这对我来说不是一个解决方案,因为我的软件必须安装在数百台机器上。
有没有一种方法可以在我的项目内部使用microsoft visual c++ 2015 可再发行 DLL 而无需安装它们?

感谢阅读:D