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

对于一个研究项目,我正在编写一个C ++附加到科学计算语言。 不幸的是,允许用户做到这一点的图书馆并不是最新的。

我开始在XCode的项目,它build立好。 后来我不得不移动到一台PC,所以我将代码迁移到了Visual Studio 2015.由于这样做,我无法构build由于以下错误:

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 。 我假设图书馆已经定义了这个macros,预测这个问题。 无论如何,这并没有解决问题。

我应该如何继续?

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

 legacy_stdio_definitions.lib 

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

你的另一个select是用VS 2015重新编译依赖这些函数的单元(这可能是首选)。

我得到这个错误编译循环最大插件对版本5最大sdk(纯C API)。 旧的库修复程序不适用于我(它应该有,如果有人有任何想法,为什么它可能不会好奇),但我定义_NO_CRT_STDIO_INLINE之前装入stdio,并没有办法。