C++:Visual Studio 2015 中未解析的外部符号 _sprintf 和 _sscanf

标签 c++ visual-studio-2015

对于一个研究项目,我正在为科学计算语言编写 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 重新编译依赖于这些函数的单元(这可能是首选选项)。

关于C++:Visual Studio 2015 中未解析的外部符号 _sprintf 和 _sscanf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32418766/

相关文章:

c++ - boost::spirit::lex 不区分大小写的关键字

c++ - 模板 C++ 中的范围问题

c - 在不修改 Windows header 的情况下无法使用 VC2015 构建 WDK 10 示例

java - 无法安装JDK

c++ - 如何为类变量实现虚函数覆盖

c++ - 为什么不能使用显式模板参数调用模板 friend 功能?

c++ - 按坐标值对具有 3D 点的 vector 进行排序——语法

c++ - 未知覆盖说明符 + 缺少类型说明符

visual-studio - VS 2015 编译器错误 'LCMapStringEx' : identifier not found

reactjs - Visual Studio 2015 TSX 文件中的 Hello World(React.js 和 TypeScript)