是否可以使用 2015 年之前的 vcredist 中的 CRT 库在较新的 Visual Studio 中生成?

Can I use CRT libs from pre-2015 vcredist to build in newer Visual Studio?

提问人:theateist 提问时间:5/30/2023 更新时间:5/30/2023 访问量:36

问:

我尝试构建一个使用 VS 2022 的第三方库的 C++ 项目。我遇到了错误。尝试链接后,我遇到了错误。根据这篇文章,我使用的库是用以前的 VS2015 CRT 库构建的。由于我没有源代码,因此无法重新编译它们。unresolved external symbol printflegacy_stdio_definitions.lib__iob_func: identifier not found

  1. 我尝试安装(我没有VS 2012)。我认为它应该安装旧的 crt 库,这些库具有我可以链接的定义。但是我找不到 Windows 10 上的安装位置。我到处搜索,我找到的唯一 crt 文件在 .库放在哪里?vcredist 2012_iob_funcvcredist 2012ucrtWindwos Kits\10vcredist 2012
  2. 我甚至可以使用 crt 库来解决这个问题,其中应该有 crt 库和定义?vcredist 2012_iob_func
  3. .这是否意味着因为它们是内联的,所以根本没有定义,因为编译器只是用实际代码替换了函数调用,并且没有导出任何内容,这就是为什么链接器找不到任何定义的原因?The definitions of all printf and scanf functions have been built into <stdio.h>_iob_func
C++ 链接器 CRT

评论

1赞 Retired Ninja 5/30/2023
redist 仅安装运行使用该 CRT 编译的程序所需的 dll 文件。它们安装在 Windows 目录下的丛林中的某个地方。如果需要链接到非常旧的库,则可能需要使用旧版本的 Visual Studio 来执行此操作。
1赞 273K 5/30/2023
您可以安装较旧的编译器工具链并在项目设置中设置它们。但是,我怀疑 VS2012 的工具链在 VS2022 中可用。

答: 暂无答案