有人可以向我解释为什么在构建以下程序时添加“legacy_stdio_definitions.lib”会解决错误吗? 我尝试使用GLFW库时发生错误。 我仍然是c ++和OpenGL世界的新手,经过数小时的在线搜索和数小时的试验和错误,我偶然发现了将“legacy_stdio_definitions.lib”添加到我的其他依赖项的建议。这确实解决了错误但我仍然不完全理解问题是什么以及.lib解决它的问题。
我正在使用Microsoft Visual Studio 2015社区版btw。
我所做的所有步骤都是:
var fiftyplanets = [{
"Hostname": "11 Com",
"Distance [pc]": 110.62,
"Effective Temperature [K]": 4742,
"Date of Last Update": "5/14/2014"
}];
function findDistance(hostname) {
function search(am, im) {
if (am.Hostname === hostname) {
index = im;
return true;
}
}
var index;
if (fiftyplanets.some(search)) {
return fiftyplanets[index]['Distance [pc]'];
}
}
function findTemp(hostname) {
function search(am, im) {
if (am.Hostname === hostname) {
index = im;
return true;
}
}
var index;
if (fiftyplanets.some(search)) {
return fiftyplanets[index]['Effective Temperature [K]'];
}
}
var name = value;
var resullt = fiftyplanets.indexOf(name);
var dist = findDistance(name);
var temp = findTemp(name);
任何帮助将不胜感激。
答案 0 :(得分:1)
Microsoft在Visual Studio 2015中制作了several changes,可能会破坏现有的代码库。根据您对问题的描述,以下是可能的罪魁祸首。引自here:
所有printf和scanf函数的定义都已内联移入stdio.h,conio.h和其他CRT头文件中。这是一个重大更改,导致链接器错误(LNK2019,未解析的外部符号),用于在本地声明这些函数而不包含相应CRT头的任何程序。如果可能,您应该更新代码以包含CRT标头(即添加#include stdio.h)和内联函数,但如果您不想修改代码以包含这些头文件,则另一种解决方案是在链接器输入中添加一个额外的库,legacy_stdio_definitions.lib。
GLFW必须在本地定义这些功能,而不包括CRT标头。