读取ini文件C ++错误

时间:2014-02-13 23:34:50

标签: c++ ini

我有一个包含此信息的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文件?

3 个答案:

答案 0 :(得分:1)

LNK2019 通常有以下原因之一:

  • 您忘记链接库的正确lib文件(在本例中为ini阅读器)。
  • 您链接了库的错误lib文件(例如静态链接和动态链接)。
  • 您忘记将库的cpp文件添加到项目中。
  • 您正在混合适用于不同平台(如x86和x64)的预编译代码。

编辑: 在此特定实例中,您必须将文件 IniReader.cpp 添加到项目中,因为它提供了缺少的功能。

答案 1 :(得分:0)

使用GetPrivateProfileStringWritePrivateProfileString等Windows API来读取.ini文件。它工作正常,不需要任何库。我用了几十年。

答案 2 :(得分:0)

最简单的方法是:

  • inih的所有文件复制到项目目录(我认为是C:\ Users \ Owner1 \ Documents \ Visual Studio 2008 \ Projects \ inireader)
  • inih的所有文件拖放到 Visual Studio 2008 中的项目中。
  • 然后按 build 按钮。

错误的原因就像@Mario说的那样。您刚刚编译了cpp文件,但没有编译项目所必需的其他cpp文件。所以你还需要编译inih中的所有.cpp文件。

注意:我认为您应该阅读this以了解有关C的编译和链接的更多信息。