问题标签 [msvcrt]

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 投票
4 回答
10075 浏览

msvcrt - Windows 下的 MSVCRT 是否像 *nix 下的 glibc (libc)?

我经常遇到与程序可执行文件捆绑在 MSVCRT(或它们更当前的等价物)中的 Windows 程序。在典型的 PC 上,我会找到许多相同 .DLL 的副本。我的理解是 MSVCRT 是 C 运行时库,有点类似于 *nix 下的 glibc/libc.so。

为什么 Windows 程序必须随身携带他们的 C 库,而不仅仅是共享系统范围的 libc?


更新:感谢 Shog9,我开始阅读有关 SxS 的文章,这进一步让我看到了 DLL 链接问题(DLL Hell) - http://blogs.msdn.com/b/martynl/archive/2005/10/ 13/480880.aspx是该问题的一个有用介绍...

0 投票
2 回答
1548 浏览

c++ - ClickOnce:在用户机器上获取 MSVCRT C++ DLL

我一直在拼命地尝试让我的应用程序(15 个 C# dll 和 1 个具有 C++ 运行时 DLL 依赖项的 C++/CLI dll)使用 ClickOnce 进行部署。我通过复制 Release 文件夹让它工作,但 ClickOnce 拒绝复制文件(msvcm80.dll、msvcp80.dll 和 msvcr80.dll)并将它们部署在这个文件夹中。

我做了这个疯狂的解决方法(提供 msvcm80.dll、msvcp80.dll 和 msvcr80.dll 作为 Content/Copy If Newer,然后在启动时创建 Microsoft.VC80.CRT 文件夹,复制这些 DLL,然后创建 Microsoft.VC80.CRT。 manifest) 这似乎有效,但这一切对我来说都是错误的。

我错过了什么吗?

0 投票
2 回答
309 浏览

windows - Win XP msvcrt 崩溃

有谁知道为什么总是在 Windows XP 上运行的应用程序现在突然崩溃 msvcrt.dll?

对线程类只有很小的改动,这是在 VC++ 6 中的 Vista 下完成的。

为了使我们所有的库正常工作,我们动态链接到 MFC dll。

较新版本的 msvcrt 不能解决问题。

有任何想法吗?

0 投票
1 回答
700 浏览

visual-c++ - 当版本之间存在已知问题时,为什么 Windows 并排 (winSxS) 安装自动升级策略?

我们有一个使用 MSVC 2K5、SP1(版本 762 msvcrt80)编译的应用程序

一切都很好,直到有人在同一台机器上安装 .Net3.0SP1,同时安装了 msvcrt80 版本 1433 和自动升级策略。

现在我们到处都是随机崩溃和不满意的客户。

我知道我们可以调整清单文件以强制使用特定版本,但我只发现了复制自动生成的细节并手动修改它的非常丑陋的方式。对于要修复的大量应用程序,这尤其令人不快

我们可以摆脱 winSxS 目录中愚蠢的“升级”策略吗?是否有一个选项/标志只为特定版本编译并且仍然自动生成清单?

0 投票
3 回答
3743 浏览

c++ - Visual Studio _CrtDumpMemoryLeaks 总是跳过对象转储

我正在尝试使用 CRT 内存泄漏检测,但在 Microsoft Visual Studio 中不断收到以下消息:“检测到内存泄漏 - 跳过对象转储。” 我永远无法让它实际执行和对象转储。

我按照微软关于内存泄漏检测的文章 ( http://msdn.microsoft.com/en-us/library/e5ewb1h3(VS.80).aspx ) 中的说明进行操作,但没有成功。

在我的 stdafx.h 我有(重建整个项目):

在我的应用程序的入口点,我有:

我也希望它会以微软宣传的格式显示文件名和行号:

虽然我什至无法获得对象转储,但我注意到其他人说他们看到了这些方面的东西(即使定义了 _CRTDBG_MAP_ALLOC ):

我真的不想花时间覆盖 new 和 delete 运算符,所以我希望 CRT 调试能帮助我。如果这不起作用,我可能最终会覆盖 new 和 delete 运算符,但我真的想获得带有文件名和行号的分配信息(交叉手指)。

谢谢,基里尔

0 投票
3 回答
580 浏览

runtime - zlib + masm

zlib 可以在没有所有 c 运行时库(如 msvcrt.dll 和许多其他库)的情况下与 masm 一起使用吗?如果是这样,你能告诉我怎么做吗?

0 投票
1 回答
2168 浏览

c++ - 无法在动态链接库 msvcrt.dll 中找到过程入口点 _wsplitpath_s

最近将包含 .NET 程序集的 MFC++ 项目从 Visual Studio 2005 升级到 2008。现在,无论何时安装它都会显示以下消息:

无法在动态链接库 msvcrt.dll 中找到过程入口点 _wsplitpath _s

我已经安装了 Microsoft Visual C++ 2008 SP1 Redistributable Package (x86),仍然没有运气。谷歌也没有证明是很有帮助的。

0 投票
3 回答
345 浏览

windows - 内存释放例程是否触及被释放的块?

Windows HeapFree、msvcrt free:它们是否会导致被释放的内存被分页?我试图估计在退出时不释放内存是否会显着加速应用程序关闭。

注意:这是一个非常具体的技术问题。这与应用程序是否应该free在退出时调用无关。

0 投票
3 回答
4062 浏览

visual-c++ - 如何强制 MSVC++ 忽略静态库的 CRT 依赖项?

我不知道是否可以这样做,但我希望将 /NODEFAULTLIB 应用于静态库项目。

我有许多使用通用静态库 D.lib 的应用程序项目(A.exe、B.dll、C.dll)。这个库有很多代码,也有其他 .lib 依赖项。其中之一是 openssl 库,它似乎是针对 CRT 的发布版本为 win32 构建的(我没有原始项目/源)。

到目前为止,为了避免混合 CRT 的发布/调试版本,我必须将 /NODEFAULTLIB:msvcrt.lib 链接器指令放在所有叶项目(A.exe、B.dll)中。这可行,但我认为这不是处理该问题的理想方式。我试图把这个属性放在 D.lib 项目中,但它没有效果。

有没有办法强制 msvc++ 忽略第 3 方库中的 msvcrt.lib 依赖项?

0 投票
6 回答
6168 浏览

c - 如何在进入 VC 中的 main() 例程之前执行一些代码?

我正在阅读微软的 CRT 源代码,我可以想出以下代码,其中函数 __initstdio1 将在 main() 例程之前执行。

问题是,如何在进入 VC 中的 main() 例程之前执行一些代码(不是 VC++ 代码)?

输出将是:

但是,我无法理解代码。

我在 .CRT$XIC 上做了一些谷歌搜索,但没有找到运气。一些专家可以向我解释上面的代码段,特别是以下内容:

  1. 这条线_CRTALLOC(".CRT$XIC") static pinit = __initstdio1;是什么意思?变量pinit的意义是什么?
  2. 在编译期间,编译器 (cl.exe) 会抛出如下警告:

Microsoft (R) 32 位 C/C++ 优化编译器版本 15.00.30729.01,适用于 80x86 版权所有 (C) Microsoft Corporation。版权所有。

需要采取哪些纠正措施来删除警告消息?

提前致谢。


添加:

我已经修改了代码并将 pinit 的类型指定为 _PIFV。现在警告信息消失了。

新代码如下: