Отладка C ++ - ошибка с моим кодом - PullRequest
0 голосов
/ 23 декабря 2010

Я пытаюсь написать программу, чтобы найти количество вхождений каждого алфавита в текстовом файле.Я сталкиваюсь с некоторыми ошибками, которые я не могу понять.

Вот код Примечание. Здесь я заменил <> угловые скобки на двойные кавычки для заголовков без расширения .h, потому что они исчезают в окне предварительного просмотра.

// Программа для печати количества вхождений каждого алфавита в текстовом файле

#include "iostream"
#include "fstream"
#include "conio.h"
#include "vector.h"
#include "string"
#include "genlib.h"

using namespace std; 


void CountLetters(string filename)
{
    Vector<int> count;
    int alphabetSize = 26,i,j;
    ifstream in;
    string line;

    //initialize the vector values. 
    for(i=0;i<alphabetSize;i++)
    {
        count.add(0);
    }
    //opening file
    in.open(filename.c_str()); 
    if(in.fail())
        Error("Error opening file");

    //going thru characters
    while(true)
    {
        getline(in,line);
        if(in.fail())
            break;
        line = ConvertToLowerCase(line);

        for(j=0;j<line.length();j++)
        {
            int index = line[j] - 'a';
            if(index>=0 && index<alphabetSize)
            {
                int previousTotal = count.getAt(index);
                count.setAt(index,previousTotal+1);
            }
        }
    }

    //print values
    for(i=0;i<alphabetSize;i++)
    {
        char ch = 'a' + i;
        cout<<ch<<":"<<count.getAt(i)<<endl;
    }
}

int main()
{
    CountLetters("name.txt");
    return 0;
}

вот ошибки:

1>------ Build started: Project: section2, Configuration: Debug Win32 ------
1>  section.cpp
1>section.cpp(35): warning C4018: '<' : signed/unsigned mismatch

1>section.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl ConvertToLowerCase(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?ConvertToLowerCase@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V12@@Z) referenced in function "void __cdecl CountLetters(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?CountLetters@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

1>section.obj : error LNK2019: unresolved external symbol "void __cdecl Error(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?Error@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "void __cdecl CountLetters(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (?CountLetters@@YAXV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

1>section.obj : error LNK2019: unresolved external symbol "class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __cdecl IntegerToString(int)" (?IntegerToString@@YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) referenced in function "private: void __thiscall Vector<int>::checkRange(int,char const *)" (?checkRange@?$Vector@H@@AAEXHPBD@Z)

Я использую Visual C ++ 2010 Express Edition

Ответы [ 2 ]

2 голосов
/ 23 декабря 2010

Вы получаете ошибки из-за того, что вы не предоставили реализации для некоторых из вызванных вами функций. Вы вызываете функцию Error, но компоновщик говорит, что не может найти никакой реализации для такой функции. То же самое верно для ConvertToLowerCase и IntegerToString. Если эти функции были объявлены genlib.h, то вам, вероятно, нужно получить ссылку на статическую или динамическую библиотеку, чтобы получить реализации, или добавить файл .cpp, определяющий их, в ваш проект.

0 голосов
/ 23 декабря 2010

Функции «Ошибка», «ConvertToLowerCase» и «IntegerToString», по-видимому, принадлежат другой библиотеке. Вы должны связаться с этой библиотекой в ​​настройках вашего проекта -> компоновщик -> ввод -> дополнительные зависимости.

Предположительно они находятся в genlib.lib?

...