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

NcA*_*ams 48 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
Run Code Online (Sandbox Code Playgroud)

尝试修复是添加标头#define _CRT_SECURE_NO_WARNINGS.但是,这a)修复了没有错误,b)添加了警告C4005 : '_CRT_SECURE_NO_WARNINGS': macro redefinition.我假设库已经定义了这个宏,预见到了这个问题.无论如何,它没有解决问题.

我该怎么办?

Mic*_*urr 149

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

legacy_stdio_definitions.lib
Run Code Online (Sandbox Code Playgroud)

VS 2015现在使用内联定义来调用许多stdio.h函数的内部函数.如果对象文件(或库成员)依赖于其中一个函数,则legacy_stdio_definitions.lib提供可链接到的函数的外部可链接版本.

您的另一个选择是使用VS 2015重新编译依赖于这些功能的单元(这可能是首选选项).

  • 您还可以将:``#pragma comment (lib, "legacy_stdio_definitions.lib")`` 添加到源文件之一中,以便链接器也将其添加。 (2认同)