Frage

Ok, also ein Problem versucht, herauszufinden, das Problem in meinem Code, den ich habe. Ich habe eine Menge Code, damit ich nur werde die relevanten Teile schreiben, die Unordnung zu, wenn ich kompilieren. Ich habe die folgende Funktion innerhalb einer Klasse, und es wird kompilieren und alles läuft gut, bis ich die Funktion „CalculateProbabilityResults“ nennen, und es läuft die 7. Zeile des Codes innerhalb dieser Gruppe. Ich habe „de-kommentierte:“ Diese Codezeile in meinem Programm, damit Sie es einfacher finden können. Ich bin mir ziemlich sicher, habe ich das Recht # include-Direktiven benötigt, da es in Ordnung kompiliert, wenn sie nicht die Funktion aufrufen, so dass nicht das Problem kann es sein kann? Ich weiß, dass einige meiner Namensschreibweise ein wenig Hilfe braucht, so Bär bitte mit mir. Vielen Dank im Voraus für die Hilfe Jungs.

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;
}

Anrufprotokoll

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 ==========
War es hilfreich?

Lösung

Der Compiler denkt, dass getTimeFrameFile eine SQLServer Methode ist:

  

nicht aufgelöstes externes Symbol "public: int __thiscall SQLServer :: getTimeFrameFile (int, int)"

, aber Sie haben es definiert als freie Funktion:

int getTimeFrameFile(int timeInHours, int timeFrameSize) {

Ändern Sie diesen von einer freien Funktion zu einer Klassenmethode löst das Problem:

int SQLServer::getTimeFrameFile(int timeInHours, int timeFrameSize)

Andere Tipps

Setzen Sie die Funktion getTimeFrameFile oben SQLServer::CalculateProbabilityResults.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top