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

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 投票
2 回答
78 浏览

c++ - 手动执行 exe 时出现运行时错误

我有一个 Qt 应用程序,当我从 Qt Creator 执行它时它运行良好。但是,通过手动单击生成的 exe 运行它时,出现以下错误:

在此处输入图像描述

我会理解它是否会要求丢失 DDL(然后我可以将其放在同一个文件夹中)。但是我应该如何处理这个(一般来说)?

PS 它没有在我的源代码中给出任何行号,我可以尝试测试这个断言。我也尝试使用发布模式,但同样的错误。

0 投票
2 回答
452 浏览

c# - 如何在另一台计算机上使用 C++/CLI 程序集运行项目?

我有一个第 3 方 C++ 程序集,我需要在我的 C# 项目中使用它。因此,我为 C++ 程序集编写了一个 C++/CLI 包装器。一切都在我的开发机器上编译并运行良好。

但是当我将bin目录的内容复制到我们的另一台机器时,它崩溃了。原因是它无法加载我的 C++/CLI-Wrapper 程序集。它给出了典型的信息:FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.

所以我做了一些调查:我确定找不到 MyWrapperAssembly ,并在程序集解析事件中添加了一个事件处理程序。在该处理程序中,我加载 MyWrapperAssembly仅用于反射。然后我加载了所有引用的程序集。MyWrapperAssembly 的仅反射加载有效。所以我确信,可以找到该文件。但是当我尝试加载它时

它因上述错误而崩溃FileNotFoundException: Could not load file or assembly 'MyWrapperAssembly' or one of its dependencies.

由于仅反射负载起作用,因此我确定 C++ 层中一定有问题。我比较了我的开发机器和测试机器上安装的 C++ Redistributable 版本,并注意到缺少一些包。所以我在测试机上下载并安装了这些包:

它没有用。然后我测试了 6 台不同的 PC。我的程序在 3 台 PC 上运行,而在另外 3 台 PC 上崩溃。唯一区别这些 PC 的是Microsoft Visual C++ 2010 Runtime. 安装后,它似乎可以工作。

但我在互联网上找不到该软件包的安装程序。所以我在我的程序崩溃的一台 PC 上安装了 Visual Studio 2013。在我安装 Visual Studio(以及 C++ 运行时)之后,我的程序就会运行。

所以我假设我需要那个 C++ 运行时。在我们的客户 PC 上要求 Visual Studio 是不可行的。所以我需要部署 C++ 运行时。但问题是:

我从哪里获得 Visual C++ 运行时?

或者有人知道我是否错过了另一件事?

0 投票
1 回答
310 浏览

c++ - 写入对象时在运行时抛出异常错误

我已经坐在这里几个小时试图弄清楚这一点。我还没有找到类似的问题(尽管我确信它已经完成了)。那么关于我的问题。当我编译它时,它很好。
我应该补充一点,unsortedList 是 Book*,它是一个结构。

但是,当我编译它时,我收到一个错误:
Assign.exe 中的 0x5AC6516F (vcruntime140d.dll) 抛出异常:0xC0000005:访问冲突写入位置 0x00000000。

然后它会弹出 memcpy.asm 窗口,光标在这个位置:

按要求定义 struct Book:

这是完整的功能:

请帮助欧比旺。你是我唯一的希望...

0 投票
1 回答
1554 浏览

visual-studio-2015 - Visual Studio 2015 安装项目的 VC++ 2010 和 VC++2012 Redistributables 先决条件

我安装了 Visual Studio 2015,并构建了一个 .NET 4.6 应用程序,该应用程序依赖于一些第三方 .NET 程序集,这些程序集依赖于一些 C++ DLL 和 EXE,而后者又依赖于 Visual C++ 2012 x64 Redistributable。我使用的 SDK 包括一些合并模块,这些模块部署了我所依赖的 SDK 的 .NET 和 C++ 程序集(但不是 Visual C++ 运行时)。

如果目标计算机上未安装 Visual C++ 2012 可再发行组件,我的 .NET 4.6 应用程序会在启动Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'MyManagedDependency.dll' or one of its dependencies. The specified module could not be found.时崩溃,并说即使我在目标系统上安装了 Visual C++ 2015 可再发行组件也会发生这种情况。因此,C++ 运行时依赖项似乎不向后/向前兼容。

我正在使用 Visual Studio 2015 安装项目为我的应用程序创建安装程序。但是,我可以从中选择的安装程序先决条件列表不包括 Visual C++ 2012 运行时库。我可以选择作为安装项目先决条件的唯一 Visual C++ 库是“Visual C++“14”运行时库”。我相信这些与 Visual C++ 2015 Redistributable 相同,这不足以让我的软件加载。

有没有办法将 Visual C++ 2012 运行时添加到我的 VS2015 安装项目安装程序的先决条件列表中(例如,通过安装更多 SDK)?还是有另一种方法我应该在我的安装程序中打包 2012 C++ 运行时?

编辑:挖掘我正在使用的第三方 SDK 的文档和安装程序包,看起来我的应用程序实际上可能只有在目标系统上同时存在 Visual C++ 2010 和 2012 可再发行组件时才能正确运行。此外,我可能需要同时安装 x86 和 x64 版本。我认为我不能安装所有带有合并模块的模块,因为这个页面说

我们建议您不要使用合并模块,除非您不必为您的应用程序提供服务并且您不依赖多个版本的 DLL。同一 DLL 的不同版本的合并模块不能包含在一个安装程序中,合并模块使得独立于您的应用程序服务 DLL 变得困难。相反,我们建议您安装 Visual C++ Redistributable Package。

如何将这些较旧的可再发行组件添加为我的 VS2015 安装项目的先决条件?

0 投票
2 回答
719 浏览

c++ - 使用 init_seg 时如何为三个 C++ 对象命名节/组?

init_seg用来控制三个 C++ 类对象的创建。每个对象位于不同的源文件/翻译单元中。调试显示在 CRT 初始化期间正在按预期创建对象。

对象按其源文件的字母顺序进行初始化。我想更改它,因为它不太正确。我访问了 MSDN 上的页面init_seg,它指出用途是:

看起来liband的使用section-name是互斥的,所以我不清楚如何使用init_seg(lib)和提供部分/组名称来获得按字母顺序排列的权利。

当我尝试使用按字母顺序排列的字符串来控制顺序时:

它会导致警告,我猜这意味着事情不会按预期工作:

".CRT$XCB"当我尝试直接使用、".CRT$001"".CRT$XCB001"(以及使用字母顺序的其他变体)直接插入 CRT 启动代码时:

它导致另一个警告,我猜这意味着事情不会按预期工作:

我在 Stack Overflow 上发现了一个关于它的问题,但答案是猜测,它不包括多个翻译单元。我还在 Wayback Machine 上找到了KB104248的存档,但它也没有太大帮助,因为它只显示了compiler,libuser.

所以我的问题是,我如何利用init_seg来控制在三个不同的源文件中创建三个对象的精确顺序?

0 投票
0 回答
4300 浏览

c++ - msvcp120.dll 和 msvcp120_clr0400.dll 有什么区别?

在我正在处理的项目中,我们可以访问msvcp120_clr0400.dll但不能msvcp120.dll在运行时环境中访问,与msvcr120.dll和相同msvcp120_clr0400.dll。(DLL 位于 SysWOW64 中)

无法安装 Visual C++ 2013 Redistributable(这些 DLL 的来源),因为我们的分发包大小有限。出于许可原因,我们无法自行分发 DLL,但可以将每个 DLL 复制并重命名为我们在安装时需要的 DLL 的名称。现在这显然是一个 hack,但据我所知,这些 DLL 的差异很小。

复制和重命名 DLL 并不理想,所以我正在考虑使用https://github.com/zeroKilo/ProxyDllMaker之类的东西创建一个 DLL 代理,并分发名为原始 DLL 的代理,但它的所有调用都只是转到我们知道的 DLL我们在 SysWOW64 中有。

1. 有没有人有更多关于这些 DLL 之间差异的信息? (在这种情况下,CLR 是否代表公共语言运行时?)
2. 是否有不安装 Visual C++ 2013 可再发行组件的替代解决方案?

0 投票
1 回答
507 浏览

azure-web-app-service - Azure 应用服务 - C++ 2010 可再发行包支持

我正在尝试调查部署到Azure App Services时对我们的 ASP.net 应用程序的支持。

我已将应用程序发布到 Azure App Services,并且似乎遇到了对C++ 2010 redistributable package的依赖问题。

我收到的错误是“无法加载文件或程序集 'mfcm100.dll' 或其依赖项之一。动态链接库 (DLL) 初始化例程失败”。

我相当确定 Azure App Services 不是具有第三方依赖项的 Web 应用程序的正确解决方案,并且其他解决方案(例如云服务(Web 角色)、虚拟机或 Service Fabric)更合适,但我想成为100% 确信,我们绝对无法构建、打包或发布 ASP.net 应用程序,并依赖于Visual C++ 2010 Redistributable to Azure App Services 之类的东西。

提前致谢。

0 投票
1 回答
1093 浏览

c++ - 0xc000007b 错误和 Microsoft Visual C++ 2010 x86 运行时

目前,我们需要为我们的游戏用户提供一个windows客户端。
在我们的开发机器上用 vs2010 编译后它工作正常。
但是当我们将它发送到其他电脑时,它会出现这个 0x000007b 错误。
它与这个问题非常相似:0xc000007b 错误?

我发现:
如果我们在那台电脑上有 vs2010 和这个,它工作正常 (即使安装了 2010 x86 Redistributable 也不好)。
运行

如何将这个 2010 x86 Runtime 安装到我们用户的电脑上,或者我可以做些什么来避免这个 0x000007b 错误?

0 投票
0 回答
114 浏览

c# - 为 CefSharp 应用程序版本安装通用 CRT

我正在尝试创建一个使用 CefSharp 并自动安装 C++ 运行时的应用程序。我在这里找到了一篇很棒的文章。(但它已经过时了,因为我使用的是 Visual Studio 2015 和更新的 cefsharp 版本 57.0.0)。但是我这是一个旧版本的 Visual Studio,从那时起他们发布了一种添加运行时文件的新方法(如本文所述

我发现另一篇文章解释了在哪里可以找到我需要在此处导入的 DLL ,但我仍然无法运行我的应用程序(我认为这是因为我缺少对它们的引用)。这是我在构建后事件命令行中得到的:

xcopy "$(SolutionDir)packages\CefSharp.Wpf.57.0.0\cef*" "$(TargetDir)" /s /y /i

这就是我放置所有我能找到的 DLL 的地方。 我的 DDL 和他们的文件夹

0 投票
1 回答
5231 浏览

c++ - 检测到“RuntimeLibrary”的 LNK2038 不匹配:值“MT_StaticRelease”与 xxx.obj 中的值“MTd_StaticDebug”不匹配

我正在使用 VS 2017 在调试模式下构建我的应用程序。我已经在发布模式下构建了它所依赖和链接的第 3 方库。这是允许的还是报告错误的原因。

页面指出:

RuntimeLibrary 指示应用或库使用的 C++ 标准库和 C 运行时的版本。使用一个版本的 C++ 标准库或 C 运行时的代码与使用不同版本的代码不兼容。有关详细信息,请参阅 /MD、/MT、/LD(使用运行时库)。

我了解 DLL 运行时库不能与非 DLL 库混合使用。调试和发布库是否也是如此?

我在 Linux 上做同样的事情没有任何问题。