问题标签 [microsoft-runtime-library]
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++ - LNK4098 - 使用 GLFW 的“MSVCRT”冲突
我正在使用 OpenGL 开发一个项目。但是,当我构建我的项目时,我有链接器警告“正在解决 LNK4098:defaultlib 'MSVCRT' 与...冲突”。
我一直在阅读有关此警告的很多内容,并使用 Dependency Walker 发现我的 GLEW 正在使用 MSVCRT.dll(我认为这就是它应该的样子,因为那是“默认库”)。但是,当我检查 GLFW3.DLL 时,它说它使用 MSVCR120.DLL,我怀疑是错误的 dll 导致我的应用程序发生冲突。
所以我尝试使用网站上的源代码从头开始构建 GLFW。我在项目中编辑了以下设置:
- 目标扩展 -> 首先我构建 .lib,然后是 .dll
- 平台工具集 -> v120
- 配置类型 -> 首先我构建 .lib,然后是 .dll
然后在 C/C++ -> Code Generation -> Runtime Library 我选择 Multi-threaded DLL (/MD)
在编译之前,我将所有内容都放在“发布”上。
当我重建所有内容并再次检查时,它仍然说它正在使用 MSVCR120.dll 并且它仍然会导致众所周知的 LNK4098 冲突。我在这里做错了什么?我该如何解决冲突?提前致谢!
c++ - 以编程方式获取运行时库版本
是否可以在运行时获取 c++ win32 应用程序的运行时库版本?我说的是 MT vs MTd vs MD vs MDd。
visual-studio - 在 Visual Studios 2015 下编译时 Clang 使用什么运行时库
这听起来有点愚蠢。但我在文档中找不到任何有关此的信息。这更像是一个先发制人的问题,以摆脱它
但是当你在 Win64 中编译 Clang/LLVM 4.0 时,当通过控制台为 Windows 编译应用程序时,Clang 立即默认使用哪个运行时库?它是当时编译的吗?或者当时设置 VSBuild 工具的目的是什么?
添加更多上下文。我正在从 Visual Studios 之外的 VS2015 x64 构建工具编译,目前没有解决方案或项目的帮助。稍后我将继续让 CMake 生成用于编译的项目。
我在 VS 之外编码的主要原因是为了更好的组织和跨平台兼容性。
c++ - 如何显式调用 CRT 启动函数
有什么方法可以在我的代码中显式调用 mainCRTStartup 函数中通常调用的函数?我对initterm和initterm_e函数特别感兴趣。即使我的程序与 crt 链接(它必须是,对吗?)我不能只调用 initterm - 我试图声明并调用,但我得到了未定义的引用。
有什么办法吗?
c++ - CEF - 使用 MDd 构建测试
我目前正在尝试实现基于 Chromium Embedded Framework (CEF) 的软件。
我的目标平台是 windows,我使用的是 CEF 自动构建的最新版本(截至本文发布之日)。
由于与其他项目的兼容性原因,我需要将运行时库分别指定为/MDd和/MD用于Debug和Release,并决定测试构建提供的示例。我还使用了 CEF 指南中指示的 make 例程。
为此,我更改了文件cef_variables.cmake。特别是,我已将CEF_COMPILER_FLAGS_DEBUG和CEF_COMPILER_FLAGS_RELEASE更改为
默认标志是/MTd和/MT。
使用默认标志时似乎没有问题,并且libcef_dll_wrapper和cefclient项目都编译得很好。
但是,当使用更改的标志时,我只能构建libcef_dll_wrapper而构建cefclient会引发以下链接器错误
cmake 命令的输出是
我在这里想念什么?我认为如果我更改宏变量,所有项目都将使用相同的设置构建,因此编译时不会出错。
c++ - 选择用于交叉编译的 MD 运行时库版本
我需要在 Windows 10 中使用 Visual 2005 进行交叉编译才能在 Windows NT 中部署。我使用 MT Run-Time 库编译(在 WIN10 中),我可以在 windows NT 中正确执行一些应用程序,但现在我需要使用 MD,而不是 MT。我可以告诉编译器链接到哪个 MD 版本吗?使用一些宏,如 WIN32_WINNT 或类似的?
谢谢!!
c++ - 在 Visual Studio 2015 上使用多个运行时库
我目前正在制作一个从数据库中获取数据并将其传递给 API 的网络服务器。我设法让这两个东西分开工作,但是当我需要让它们一起工作时(我的网络服务器查询数据库,用 json 解析它,然后将它传递给服务器),我在一个领域遇到了问题我很陌生。
我将 Casablanca 用于我的 API,将 Connector/C++ 用于数据库连接。但是,在此链接的静态构建部分中,它告诉我运行时库应该使用 /MD 编译器选项。问题是要使程序的网络服务器部分工作,它需要在默认的 /MDd 中。
是否可以在 /MD 或 /MDd 中使其中一个或另一个工作,如果不能,我的网络服务器有哪些选项可以从数据库中获取查询的数据?
编辑:这似乎只是调试问题而不是发布问题。这个链接是让我打勾的那个。我不知道这是否合乎道德,但至少它是有效的。
这可以关闭。
c++ - 即使设置为 MTd,项目也使用 MDd 编译
我正在尝试编译一个依赖于其他一些静态项目的 exe。一些项目依赖于使用MTd
运行时库选项编译的 OpenCV 库。我所做的是将我所有项目的运行时库也设置为MTd
(在 Visual Studio 项目属性的运行时库选项中)。当我只编译静态项目时,一切顺利,但是当我编译 exe 文件时,我收到如下错误:
Transform_Static.lib (Transform.obj : error LNK2038: mismatch detected for 'Runtime Library' value 'MDd_DynamicDebug' dosen't match value 'MTd_StaticDebug' in Math_UT.obj
我试图从 exe 项目的链接器依赖项中添加/删除库,但没有任何改变,我还能做什么?谢谢。
visual-c++ - How to activate CMakeSettings.json variables in VS2019
I am trying CMake in VS2019 for the first time and am confused about how it works. This is in Windows 10 using the msvc_x64_x64 toolset.
I have a CMake project that creates a static library, which I would like to use dynamic linking. The default CMakeSettings.json includes variables
CMAKE_CXX_FLAGS_DEBUG = /MDd /Zi /Ob0 /Od /RTC1
The CMakeLists.txt's do not override this, so it looks good to me.
However, the lib file produced seems to use static linking and another project can link to it with runtime library /MTd not /MDd.
So it seems that it is getting the compiler flags from somewhere else and ignoring those in CMakeSettings.json, or there is some variable other than CMAKE_CXX_FLAGS_DEBUG.
How can I get it to use the CMakeSettings.json variables?
Here is the current CMakeSettings.json file
c++ - 我无法使用 quickfix 构建项目
我使用 quickfix.lib 构建项目 在 VC++ 目录中我在 C/C++ -> General -> Additional Include Dir 中设置路径“lib” 我在 Linker -> Input -> Additional Dependencies 中设置了我的 inlude 文件的路径“include” quickfix.lib 此项目构建正确,但是当我使用 FIX 中的对象时,我看到 严重代码描述项目文件行抑制状态错误 LNK2038 检测到“RuntimeLibrary”不匹配:值“MD_DynamicRelease”与 FIXExchangeAPI 中的值“MDd_DynamicDebug”不匹配。 obj SampleGateway C:...\quickfix.lib(Dictionary.obj) 1
我必须做什么?我将 RuntimeLibrary 更改为每个值并进行编译,但这对我没有帮助