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

尝试的修复方法是添加 header #define _CRT_SECURE_NO_WARNINGS。但是,这 a) 没有修复任何错误,b) 添加了警告 C4005:'_CRT_SECURE_NO_WARNINGS':宏重新定义。我假设库已经定义了这个宏,预计会出现这个问题。不管怎样,这并没有解决问题。

我应该如何进行?

最佳答案

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

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/57455884/

相关文章:

c++ - std::find 使用用户定义的结构

c++ - 此 shared_ptr 示例中的内容不清楚

c++ - 类型定义应该依赖于模板参数

c++ - 自定义预编译头导致编译错误

c# - 如何在 Visual Studio 中启用实时可视化树和实时属性资源管理器

c# - 单元测试 session 无法执行

c++ - 绑定(bind) lambda 的速度(通过 std::function)与仿函数结构的 operator()

c++ - 我可以在两个 istream_iterators 之间进行赋值操作吗?

visual-studio-2013 - 锁定计算机或启动另一个实例时 Visual Studio 崩溃

android - Visual Studio 2015 Xamarin 部署失败,没有任何错误消息