问题标签 [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.
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是该问题的一个有用介绍...
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) 这似乎有效,但这一切对我来说都是错误的。
我错过了什么吗?
windows - Win XP msvcrt 崩溃
有谁知道为什么总是在 Windows XP 上运行的应用程序现在突然崩溃 msvcrt.dll?
对线程类只有很小的改动,这是在 VC++ 6 中的 Vista 下完成的。
为了使我们所有的库正常工作,我们动态链接到 MFC dll。
较新版本的 msvcrt 不能解决问题。
有任何想法吗?
visual-c++ - 当版本之间存在已知问题时,为什么 Windows 并排 (winSxS) 安装自动升级策略?
我们有一个使用 MSVC 2K5、SP1(版本 762 msvcrt80)编译的应用程序
一切都很好,直到有人在同一台机器上安装 .Net3.0SP1,同时安装了 msvcrt80 版本 1433 和自动升级策略。
现在我们到处都是随机崩溃和不满意的客户。
我知道我们可以调整清单文件以强制使用特定版本,但我只发现了复制自动生成的细节并手动修改它的非常丑陋的方式。对于要修复的大量应用程序,这尤其令人不快
我们可以摆脱 winSxS 目录中愚蠢的“升级”策略吗?是否有一个选项/标志只为特定版本编译并且仍然自动生成清单?
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 运算符,但我真的想获得带有文件名和行号的分配信息(交叉手指)。
谢谢,基里尔
runtime - zlib + masm
zlib 可以在没有所有 c 运行时库(如 msvcrt.dll 和许多其他库)的情况下与 masm 一起使用吗?如果是这样,你能告诉我怎么做吗?
c++ - 无法在动态链接库 msvcrt.dll 中找到过程入口点 _wsplitpath_s
最近将包含 .NET 程序集的 MFC++ 项目从 Visual Studio 2005 升级到 2008。现在,无论何时安装它都会显示以下消息:
无法在动态链接库 msvcrt.dll 中找到过程入口点 _wsplitpath _s
我已经安装了 Microsoft Visual C++ 2008 SP1 Redistributable Package (x86),仍然没有运气。谷歌也没有证明是很有帮助的。
windows - 内存释放例程是否触及被释放的块?
Windows HeapFree、msvcrt free:它们是否会导致被释放的内存被分页?我试图估计在退出时不释放内存是否会显着加速应用程序关闭。
注意:这是一个非常具体的技术问题。这与应用程序是否应该free
在退出时调用无关。
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 依赖项?
c - 如何在进入 VC 中的 main() 例程之前执行一些代码?
我正在阅读微软的 CRT 源代码,我可以想出以下代码,其中函数 __initstdio1 将在 main() 例程之前执行。
问题是,如何在进入 VC 中的 main() 例程之前执行一些代码(不是 VC++ 代码)?
输出将是:
但是,我无法理解代码。
我在 .CRT$XIC 上做了一些谷歌搜索,但没有找到运气。一些专家可以向我解释上面的代码段,特别是以下内容:
- 这条线
_CRTALLOC(".CRT$XIC") static pinit = __initstdio1;
是什么意思?变量pinit的意义是什么? - 在编译期间,编译器 (cl.exe) 会抛出如下警告:
Microsoft (R) 32 位 C/C++ 优化编译器版本 15.00.30729.01,适用于 80x86 版权所有 (C) Microsoft Corporation。版权所有。
需要采取哪些纠正措施来删除警告消息?
提前致谢。
添加:
我已经修改了代码并将 pinit 的类型指定为 _PIFV。现在警告信息消失了。
新代码如下: