MSVC 2019:遗留库中的 libc 外部未解决

MSVC 2019: libc externals in legacy library not resolved

我正在将旧版应用程序(最初使用 VC 6.0 编译)移植到 MSVC 2019。它使用旧版静态库 (libtest.lib),使用 [=51] 编译=] 6.0。我的问题是 libtest.lib 中的一些(但不是全部)标准 libc 函数没有被 MSVC 2019 解决。

例如,libtest.lib 使用 vsprintf()。在编译时 MSVC 2019 报告“未解析的外部符号 _vsprintf 在... 中引用”。其他 libc 函数(例如 strlen)解析得很好。

我试过大量的构建设置,但并不开心。
为什么会发生这种情况,我该如何解决?

我目前的研究...

我在 VC60 headers 中做了很多挖掘,发现 vsprintf 在 studio.h 中定义为

_CRTIMP int __cdecl vsprintf(char *,const char *, va_list);

while strlen 在 string.h 中定义 作为

size_t  __cdecl strlen(const char *); 

我不确定其中的含义,但我猜测 strlen 只是一个 plain-vanilla 静态函数,而 vsprintf 是从某些 CRT DLL 导入的(在 MSVC 2019 中可能有所不同)。

我想我也可以将 libtest.lib 移植到 MSVC 2019,但我还有将近 100 个其他静态库,将它们全部移植将是一个主要的痛苦。

感谢@dewaffled 的精彩回答:
Microsoft 有一个库可以使 CRT 函数适应最新版本的 MSVC,例如 2019

只需将以下行添加到您的主程序中:

#pragma comment(lib, "legacy_stdio_definitions.lib")

或者,我认为您可以将库添加到:

Project Properties -> Linker -> Input -> Additional Dependencies