VS2015:与 Muiload.lib 链接时出现 LNK2019 错误

VS2015: LNK2019 error when linking with Muiload.lib

我正在尝试包含 muiload.h 并与 muiload.lib 链接并在 Visual Studio 2015 中调用 LoadMUILibrary 时的下一个错误]:

Muiload.lib(muiload.obj) : error LNK2019: unresolved external symbol __vsnwprintf referenced in function "long __stdcall StringVPrintfWorkerW(unsigned short *,unsigned int,unsigned int *,unsigned short const *,char *)" (?StringVPrintfWorkerW@@YGJPAGIPAIPBGPAD@Z)

也许 muiload.lib 有问题?

解决了将附加库 legacy_stdio_definitions.lib 添加到链接器输入的问题,如 https://social.msdn.microsoft.com/Forums/en-US/5150eeec-4427-440f-ab19-aecb26113d31/updated-to-vs-2015-and-now-get-unresolved-external-errors?forum=vcgeneral

中所述

链接到 legacy_stdio_definitions.lib 的另一种方法是重新定义这些函数签名以匹配它们已弃用的样式:

int (WINAPIV * __vsnprintf)(char *, size_t, const char*, va_list) = _vsnprintf;
int (WINAPIV * __vsnwprintf)(wchar_t *, size_t, const wchar_t*, va_list) = _vsnwprintf;

这样做的一个好处是它避免了因包含遗留库而导致的其他可能的链接器定义问题。

请注意,这应该在编译器单元 (.cpp) 中而不是在头文件中定义。