【发布时间】:2014-02-13 23:34:50
【问题描述】:
我有一个包含以下信息的 ini 文件: 这是我的代码:
#include "stdafx.h"
#include "iostream"
#include <stdio.h>
#include "IniReader.h"
#include "INIReader.h"
using namespace std;
int main(int argc, char * argv[])
{
INIReader reader("C:\SampleFile.ini");
if (reader.ParseError() < 0) {
cout << "Can't load 'test.ini'\n";
return 1;
}
std::cout << "Config loaded from 'test.ini': version="
<< reader.GetInteger("info", "CaptureDuration", -1) << "CaptureDuration"<<"\n"
<< reader.Get("info", "DayStart", `enter code here`"UNKNOWN") << ", email=";
cin.get();
return 0;
}
我还附上了我从这个链接中找到的 INIReader 头文件: https://code.google.com/p/inih/source/browse/trunk/cpp/INIReader.h 我希望代码打印从 ini 文件中获取的整数和字符串值。但我收到链接器错误。我该如何解决?
Errors:
,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Get@INIReader@@QAE?AV?$
1>main.obj : error LNK2019: unresolved external symbol "public: int __thiscall INIReader::ParseError(void)" (?ParseError@INIReader@@QAEHXZ) referenced in function _main
@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function _main
1>C:\Users\Owner1\Documents\Visual Studio 2008\Projects\inireader\Debug\inireader.exe : fatal error LNK1120: 4 unresolved externals
我没有看到任何链接到这个项目的 lib 文件,我应该从哪里获得这些 lib 文件?
【问题讨论】:
-
对
#include语句使用尖括号<...>。 -
摆脱 25 年前重要的文件格式非常困难。读取 INI 文件非常昂贵,单个设置需要 20 到 50 毫秒。让我们都责怪 C++ 编译器认为
\S是一个有效字符,也很难摆脱。 -
@HansPassant : 20ms 大约是任何合理硬盘上的平均寻道 + 延迟。 - 或者您是说 Windows API 很慢?但是,如果性能和易于手动调整很重要,那么有什么更好的选择呢? (如果你说 XML 或注册表,我可能会笑...)