Visual Studio 2015中无法解析的外部符号_sprintf和_sscanf

C++: Unresolved external symbol _sprintf and _sscanf in Visual Studio 2015

本文关键字:符号 外部 sprintf sscanf 2015 Studio Visual      更新时间:2023-10-16

为了一个研究项目,我正在为一种科学计算语言编写一个c++附加组件。不幸的是,允许用户这样做的库并没有很好地保持最新。

我在XCode中开始这个项目,它在那里构建得很好。后来我不得不搬到PC上,所以我把代码迁移到Visual Studio 2015上。由于这样做,由于以下错误,我无法构建:

LNK2001 : unresolved external symbol _sprintf
LNK2019 : unresolved external symbol _sscanf referenced in function _GetDDouble
LNK2019 : unresolved external symbol _sprintf referenced in function _CheckRunningInMainThread

一个尝试的修复是添加标题#define _CRT_SECURE_NO_WARNINGS。然而,这a)没有修复错误,b)增加了警告C4005 : '_CRT_SECURE_NO_WARNINGS': macro redefinition。我假设库已经定义了这个宏,预料到了这个问题。无论如何,这并没有解决问题。

我该怎么做?

将以下库添加到链接器输入文件中:

legacy_stdio_definitions.lib

VS 2015现在使用内联定义来调用许多stdio.h函数的内部函数。如果目标文件(或库成员)依赖于这些函数之一,那么legacy_stdio_definitions.lib提供了一个可以链接到的函数的外部可链接版本。

你的另一个选择是在VS 2015中重新编译依赖于这些函数的单元(这可能是首选选项)。

我得到了这个错误编译循环max插件对版本5 max sdk(纯c api)。遗留的库修复对我不起作用(它应该有,如果有人知道为什么它可能没有,我会很好奇),但是我在加载stdio之前定义了_NO_CRT_STDIO_INLINE,这确实起了作用。

我最近遇到了这个问题,并能够将User32.lib添加到链接器>输入在附加依赖项。

您也可以在代码中包含#pragma comment (lib, "User32.lib")

相关文章: