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

7
我在使用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的问题?

我在一个旧的DirectX SDK示例中遇到了同样的问题。你的解决方案起作用了。 - masterxilo
2个回答

16

根据此处链接的说明,将库 legacy_stdio_definitions.lib 添加到链接器输入中即可解决“无法解析的外部错误”问题。


0

与链接 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)中定义,而不是在头文件中定义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接