ошибка LNK2019: неразрешенный внешний символ - PullRequest
4 голосов
/ 23 января 2010

Хорошо, у меня возникла проблема при попытке выяснить проблему в моем коде. У меня много кода, поэтому я буду публиковать только те части, которые мешают при компиляции. У меня есть следующая функция внутри класса, и она будет компилироваться, и все будет работать нормально, пока я не вызову функцию "CalculateProbabilityResults", и она не выполнит 7-ю строку кода внутри него. Я «закомментировал» эту строку кода в моей программе, чтобы вам было легче ее найти. Я почти уверен, что у меня есть нужные директивы #include, так как они прекрасно компилируются, когда не вызывается функция, так что это не может быть проблемой, не так ли? Я знаю, что некоторые из моих именных обозначений нуждаются в небольшой помощи, поэтому, пожалуйста, потерпите меня. Заранее спасибо за помощь, ребята.

int SQLServer::CalculateProbabilityResults(int profile, int frame, int time_period, int TimeWindowSize) {
    ofstream ResultFile;
    stringstream searchFileName;
    stringstream outputName;
    vector<vector<int>> timeFrameItemsets;
    int num = getTimeFrameFile(frame*TimeWindowSize, TimeWindowSize);
    cout << num << endl;

    //outputName << "Results" << getTimeFrameFile((frame*TimeWindowSize), TimeWindowSize) << ".csv";
    cout << outputName.str() << endl;
    outputName.clear();
    //ResultFile.open(outputName.str().c_str());
    ResultFile.close();
    result.resize(0);
    return 0;
}

int getTimeFrameFile(int timeInHours, int timeFrameSize) {
    int fileNum = 0;
    int testWin;
    if (timeInHours > 24) {
        while (timeInHours >24)
            timeInHours -= 24;
    }
    for (testWin = 0; testWin < 24/timeFrameSize; testWin++) {
        if (timeInHours >= testWin*timeFrameSize && timeInHours < (testWin+1)*timeFrameSize)
            fileNum = testWin+1;
    }
    if (fileNum == 0)
        fileNum = testWin+1;
    return fileNum;
}

Журнал вызовов

1>------ Rebuild All started: Project: MobileSPADE_1.3, Configuration: Debug Win32 ------
1>Deleting intermediate and output files for project 'MobileSPADE_1.3', configuration 'Debug|Win32'
1>Compiling...
1>main.cpp
1>MobileSPADE.cpp
1>SQLServer.cpp
1>Generating Code...
1>Compiling manifest to resources...
1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0
1>Copyright (C) Microsoft Corporation.  All rights reserved.
1>Linking...
1>LINK : C:\Users\JoshBradley\Desktop\MobileSPADE_1.3\MobileSPADE_1.3\Debug\MobileSPADE_1.3.exe not found or not built by the last incremental link; performing full link
1>SQLServer.obj : error LNK2019: unresolved external symbol "public: int __thiscall SQLServer::getTimeFrameFile(int,int)" (?getTimeFrameFile@SQLServer@@QAEHHH@Z) referenced in function "public: int __thiscall SQLServer::CalculateProbabilityResults(int,int,int,int)" (?CalculateProbabilityResults@SQLServer@@QAEHHHHH@Z)
1>C:\Users\JoshBradley\Desktop\MobileSPADE_1.3\MobileSPADE_1.3\Debug\MobileSPADE_1.3.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\JoshBradley\Desktop\MobileSPADE_1.3\MobileSPADE_1.3\MobileSPADE_1.3\Debug\BuildLog.htm"
1>MobileSPADE_1.3 - 2 error(s), 0 warning(s)
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ==========

Ответы [ 2 ]

7 голосов
/ 23 января 2010

Компилятор считает, что getTimeFrameFile - это метод SQLServer:

неразрешенный внешний символ "public: int __thiscall SQLServer :: getTimeFrameFile (int, int)"

но вы определили его как свободную функцию:

int getTimeFrameFile(int timeInHours, int timeFrameSize) {

Измените это с бесплатной функции на метод класса, чтобы решить проблему:

int SQLServer::getTimeFrameFile(int timeInHours, int timeFrameSize)
1 голос
/ 23 января 2010

Поставьте функцию getTimeFrameFile выше SQLServer::CalculateProbabilityResults.

...