问题标签 [crt]

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 回答
23914 浏览

visual-c++ - 如何解决 Visual Studio (LNK2005) 中的此链接错误?

我一直有以下形式的链接器错误:

libcmtd.dll msvmrtd.dll一些元素(例如: _mkdir )已经定义...

而且我不知道如何解决它们。

这是一个完整的错误信息:

private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) 已经在 LIBCMTD.lib(typinfo.obj) 中定义

MSVCRTD.lib(ti_inst.obj) : 错误 LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已在 LIBCMTD.lib 中定义(typinfo.obj)

你能帮我解决这个问题吗?

0 投票
1 回答
1685 浏览

vbscript - 如何使用 VBscript 确定连接到机器的显示器是 LCD 还是 CRT?

我正在尝试向 VBscript 添加信息,以确定连接到当前机器的监视器是 LCD 还是 CRT。我知道我可以从 HKLM\System\CCS\Enum\DISPLAY 获取 EDID 信息,但我不能用它来确定显示器类型。我可以从 WMI 类 Win32_DesktopMonitor、Win32_DisplayConfiguration 和 Win32_VideoController 中获取的唯一一致信息是屏幕分辨率和刷新率。有一些屏幕分辨率通常仅由 LCD 使用(如宽屏屏幕),但这并不可靠。

无需建立型号名称表,我可以做些什么来确定显示器是 LCD 还是 CRT?

0 投票
1 回答
3164 浏览

gcc - 如何使用 GCC 静态链接到 CRT?

如何使用 GCC 静态链接到 Windows / macOS 和 Linux 上的 CRT?

0 投票
3 回答
14219 浏览

visual-c++ - _WinMainCRTStartup 执行什么功能?

这是一系列至少两个密切相关但不同的问题的一部分。我希望我通过单独询问他们来做正确的事情。

我试图让我的 Visual C++ 2008 应用程序在没有 C 运行时库的情况下工作。这是一个 Win32 GUI 应用程序,没有 MFC 或其他花哨的东西,只是普通的 Windows API。

所以我将 Project Properties -> Configuration -> C/C++ -> Advanced -> Omit Default Library Names 设置为 Yes (compiler flag /Zl) 并重建。

然后链接器抱怨一个未解决的 external _WinMainCRTStartup。很公平,我可以告诉链接器使用不同的入口点,比如MyStartup. 根据我在网上收集的信息,_WinMainCRTStartup做了一些初始化工作,我可能想做MyStartup其中的一部分。

所以我的问题是:执行了哪些功能_WinMainCRTStartup,如果我不使用 CRT,我可以省略哪些功能?

如果您对这些东西很了解,请也看看我的另一个问题。谢谢!

旁白:为什么我首先要这样做?

  1. 我的应用程序没有明确使用任何 CRT 函数。
  2. 我喜欢精益求精的应用程序。
  3. 它会教给我一些新的东西。
0 投票
2 回答
8259 浏览

visual-c++ - 构建不使用 CRT 函数的 Visual C++ 应用程序仍然引用一些

这是一系列至少两个密切相关但不同的问题的一部分。我希望我通过单独询问他们来做正确的事情。

我试图让我的 Visual C++ 2008 应用程序在没有 C 运行时库的情况下工作。这是一个 Win32 GUI 应用程序,没有 MFC 或其他花哨的东西,只是普通的 Windows API。

所以我将 Project Properties -> Configuration -> C/C++ -> Advanced -> Omit Default Library Names 设置为 Yes (compiler flag /Zl) 并重建。假设我已经编写了一个合适的入口点函数,这是我另一个问题的主题。

我收到两个链接器错误;他们可能是相关的。链接器抱怨未解析的外部符号__fltused_memcpy. foobar.obj不用说,我在我的程序中都没有明确使用,但我确实memcpyfoobar.cpp. (我会使用CopyMemory但结果是#defined 与memcpy...相同)

(我想我可以memcpy通过使用编译器内在函数来解决这个问题,比如#pragma intrinsic(memcpy),但这没有区别。)

如果我查看预处理器输出(添加/P到编译器命令行),我看不到任何__fltused_memcpyin 的引用foobar.i

所以,我的问题是:这些链接器错误来自哪里,我该如何解决?

0 投票
2 回答
654 浏览

mfc - MFC CRT 订单链接器问题

我有这里描述的问题(我在尝试将 MFC 添加到我的项目时遇到那些链接器错误): http: //support.microsoft.com/ ?scid=kb%3Ben-us%3B148652&x=8&y=9

但是 - 如果我遵循解决方案并输入 nafxcwd.lib;libcmtd.lib 进入“忽略库”以及“附加依赖项”,然后我会得到一个

致命错误 LNK1104:无法打开文件“nafxcwd.lib;”

可能是什么问题呢?谢谢!

0 投票
3 回答
2880 浏览

c++ - 静态链接使用不同版本的 C 运行时库构建的库,好还是坏?

考虑这种情况:应用程序链接到第 3 方库 A。

A 是使用 MSVC 2008 构建的,并且静态链接(即使用 /MT 构建)到 C 运行时库 v9.0。

该应用程序是使用 MSVC 2005 构建的,并且静态链接到 A 和(使用 /MT)到 C 运行时库 v8.0。

我可以看到这个问题 - 例如,如果运行时库版本之间的标头中的类型发生了变化。

是否注意保持运行时库标头在版本之间兼容,或者是否应该始终确保所有静态链接的库都链接到相同版本的运行时库?

0 投票
1 回答
1137 浏览

qt - 运行 Qt Creator 时出现并排错误

在 Vista Ultimate(无 SP)上,我使用 Windows 二进制安装程序安装了诺基亚的 Qt Creator 1.3。当我尝试运行它时,我收到一个并排错误消息:“应用程序无法启动,因为它的并排配置不正确。请参阅应用程序事件日志以获取更多详细信息。”

事件查看器日志显示:“C:\Qt\qtcreator-1.3.0\bin\qtcreator.exe 的激活上下文生成失败。依赖程序集 Microsoft.VC90.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b" ,type="win32",version="9.0.21022.8" 找不到,详细诊断请使用sxstrace.exe。

运行和 sxstrace 给了我一个日志文件。我已经在http://cl1p.net/sxstrace/上传了内容

我认为它与不同版本的 DLL 和 Sxstrace 系统以及 VC90.crt 有关,但我不知道该怎么做。如果有帮助,我在 PC 上安装的唯一其他开发工具是 Dev-C++(和 MingW)。我过去曾安装过 Visual Studio,但从那以后它就被卸载了。其他具有 VC90.crt 清单的应用程序,如 Limewire 和 Digsby 运行良好。请帮忙?

0 投票
2 回答
1003 浏览

.net - 指导 VC++ 应用程序使用较旧的 VC80.CRT 版本

我有一个 VC++ 托管应用程序,它是针对 VC80.CRT 版本 8.0.50727.762 构建和测试的。我验证了嵌入式清单指向762,并且构建机器有762作为最新的VC80.CRT版本。

该应用程序现在也已在具有 762 以及更高版本的运行时 (4053) 的机器上运行。

顺便说一下,这两台机器都是 XP Pro SP2;第二台机器(可以说是 4053)具有 .NET 3.0。

该应用程序在 4053 机器上运行,我想我理解由于 SxS 下的 VC80.CRT 随附的发布者策略,该应用程序为应用程序加载 4053 而不是 762 。

由于各种我不想进入的原因,我一直试图强制它使用762版本,到目前为止没有成功。

无论如何,在研究了文献之后,我想我理解了决定要加载的目标版本的链条:app config -> publisher policy -> machine config。

所以我决定将 myapp.exe.config 文件(见下文)放在 myapp.exe 附近;请注意将 publisherPolicy 设置为“no”以避免链接的第二步。

该应用程序仍然加载 4053,而不是 762。也许这是由于机器配置文件所说的,但我什至无法开始弄清楚该文件的内容应该是什么意思——当然没有任何对 VC80 的引用.CRT 或那里的任何 msvc[x]80.dll 库。

我希望引用旧版本的程序集相对容易,这是克服“dll 地狱”的关键——即使程序集发布者感觉要保证向后兼容性(通过发布者策略)。
任何人都可以阐明吗?谢谢

0 投票
2 回答
4079 浏览

visual-studio - MSVCRTD.lib(cpu_disp.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators

I know this question has popped up before but I could not find a good answer so I try here.

I have a pure C dll (Win32) and I get this warning when compiling:

MSVCRTD.lib(cpu_disp.obj) : warning LNK4210: .CRT section exists; there may be unhandled static initializers or terminators

Everything seems to work just fine but I am concerned about this warning since I do not understad it. I have quite a few static variables but I do not understand what ".CRT section exist" means.

What approach should I take to eliminate this warning. When I try to add the libs msdn suggests I get a ton of linker errors.