问题标签 [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.
c++ - CRT 在 VS 2008 中调用 _osfile() 时出现断言错误?
我有一个已经工作了很长时间的 C++ 代码库。代码库是我最近迁移到 VS 2008 的遗留 VS 2003 项目集。迁移似乎是成功的,因为生成的程序已构建并运行。
我在新驱动器上重新安装了我的操作系统和所有应用程序,现在当我尝试在调试器中调试程序时,我在 CRT 中收到一个断言错误chsize
(真的,_chsize_s
)。具体来说(裁剪为必需品,忽略安全检查):
调试断言发生在chsize
- 特别是在 CRT 的源代码文件 chsize.c 的以下行中:
...filedes
匹配的地方filehandle
。
我认为问题可能是由于新系统上没有安装旧版本的 VS(仅限 VS 2008),因为一些第 3 方库需要 VS 8.0 可再发行版 - 即使在旧系统上似乎正在构建和运行使用 VS 2008 就好了。因此我安装了 VS 2005(不是 2003)。但是,问题仍在继续发生。
任何建议都会非常受欢迎。
*更新 - 该问题与chsize
. 请看下面我的回答。
msvcrt - MSVCRT 中的“创建硬链接”功能的名称是什么?
要修复此答案中的错误:在 MSVCRT 中创建硬链接的函数的正确名称是什么?
wix - 使用 WiX 自动安装运行时库
当我的文件集包含对 C++ 运行时 DLL 具有一个或多个依赖项的 DLL 时,我需要从 VCRedist.exe 安装该文件。这可能很困难,因为每个 DLL 都依赖于特定版本的 C++ 运行时。
如何自动将运行时可再发行组件添加到我的安装程序?
如何在 WinSxS 中处理需要不同版本的 C++ 运行时的 DLL?
dll - 我可以在我的 DLL 延迟加载处理程序函数中使用 MSVCRT 函数吗?
我已经使用 http://msdn.microsoft.com/en-us/library/151kt790.aspx中的说明为我的项目添加了延迟加载
在“delayhlp.cpp”(DLL 加载帮助程序的示例实现)__HrLoadAllImportsForDll
中,我看到作者避免使用任何标准 C 库 (MSVCRT) 函数。我是否需要在我的处理程序函数中执行相同的操作,该处理程序函数将由示例 DLL 加载帮助程序调用?
我认为作者的原因是有人可能会尝试延迟加载 MSVCRT 本身。我不打算这样做。那么我使用 MSVCRT 功能是否安全?
背景信息。延迟加载第 3 方 DLL 的原因是因为两个版本之间的函数签名发生了变化,我需要使用任一版本运行我的程序。然后,我提供了一个简单的包装函数来使 DLL 的函数签名适应所需的函数签名。此函数在失败__pfnDliFailureHook2
时由延迟加载处理程序 ( )注册。GetProcAddress
一些测试。我在处理程序函数的开头添加了一个断点。我发现当断点被命中时,已经加载了等(来自 Visual Studio 的模块窗格)msvcrt.dll
。msvcr90d.dll
这是否意味着我可以安全地调用 CRT 函数?
c++-cli - 在带有 /MTd CRT 的本机 c++ exe 中使用带有 /MDd CRT 的 CLI C++ dll
我有一个使用 /MTd 运行时库的本机 c++ exe。我无法更改此选项,因为我对此 exe 的构建没有太多控制权。我需要在这个 exe 中调用一个 CLI C++ dll,它返回一个带有 STL 向量成员变量的类。在 CLI C++ 方法返回时,我得到一个堆损坏错误。根据我的分析,发生这种情况是因为有两个不同的 CRT,并且向量解除分配方法在本机 CRT 中运行,并且由于地址无效而导致炸弹。
如何从使用不同 CRT 编译的 CLI C++ dll 返回向量以与我的本机 exe 一起运行?
c - 你能从连接的 TCP 套接字中确定源 IP 和端口吗?
我想让我的服务器从连接的 TCP 套接字确定客户端的源 IP 和端口。由于我的客户端可能在 NAT 之后,我不能依赖客户端告诉我(在连接协议中)......如果可能的话,我将需要在 Windows 和 Linux 上实现它。 ..但是任何一个的答案都会帮助我开始......
我正在使用 C,我正在寻找基于 libc 或 msvcrt 的解决方案。
c++ - .crt 部分?这个警告是什么意思?
我最近收到了这个警告(VC++ 2010)
warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators
我假设这是关键部分。自从我的操作系统课程以来已经有一段时间了,所以我无法真正弄清楚这意味着什么。如果我没记错的话,关键部分使用共享资源。那么这个警告是如何相关的,它到底是什么意思呢?
c++ - 由于已经定义的链接器错误
自从我编写任何使用 LibCurl 的 .dll 插件以来已经过去了大约一年,但我决定今晚再开始一个。不幸的是,我已经与相同的链接器错误作斗争了将近 4 个小时,我完全迷失了。
我正在静态构建 LibCurl,它在大多数情况下似乎都很好,除了我收到以下链接器错误。
我努力了...
1) 由于 MSDN 说 LNK2005 是由此引起的,因此重新组织了我包含的库。
2) 通过 MSVC 应用程序重建 LibCurl 库,然后通过命令行工具。
3) 排除引起问题的库。
还有一堆我现在想不起来的事情。谁能帮我提供一些关于如何解决这些问题的信息?
debugging - 我可以从 _CrtSetReportHook 中抛出异常吗?
假设我在 C++ 程序中,我想将这些报告转换为异常。使用 C++ throw 语句是一种合理的方法,还是我只是重定向到 stderr?
c++ - 无法从 MSVCRT strtod/sscanf/atof 函数中获取 NaN
有没有办法NaN
从 Windows CRT 获取 sstring
到float
函数?
原因:如果舍入模式没有改变,我正在用 C 编写一个 IEEEfloat
到string
转换器,没有信息丢失(或返回原始文件)。strtod
sscanf
atof
float
我在 MinGW 或 Visual C++ 下,所以这些调用转到 MSVC++ 运行时。问题是我无法让它解析任何特殊值(如"Inf"
or "NaN"
)。Inf
没问题(在解析不适合 a 的值后返回float
,例如"1e999"
)。