Question

Ok, donc je vais avoir un problème en essayant figure le problème dans mon code. J'ai beaucoup de code, donc je vais seulement afficher les parties pertinentes qui sont la pagaille quand je compile. J'ai la fonction suivante à l'intérieur d'une classe et il compilera et tout fonctionnera bien jusqu'à ce que j'appelle la fonction « CalculateProbabilityResults » et il fonctionne la 7ème ligne de code à l'intérieur. Je suis « de-commentais » cette ligne de code dans mon programme afin que vous puissiez trouver plus facilement. Je suis sûr que j'ai les bonnes directives #include nécessaires car il compile très bien quand ne pas appeler la fonction, de sorte que ne peut être le problème peut-il? Je sais que certains de mes notations nommer a besoin d'un peu d'aide, alors s'il vous plaît garder avec moi. Merci d'avance pour l'aide les gars.

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

Registre

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 ==========
Était-ce utile?

La solution

Le compilateur pense que getTimeFrameFile est une méthode de SQLServer:

  

symbole externe non résolu "public: int __thiscall SQLServer :: getTimeFrameFile (int, int)"

mais vous l'avez défini en fonction libre:

int getTimeFrameFile(int timeInHours, int timeFrameSize) {

Changement que d'une fonction libre à une méthode de classe va résoudre le problème:

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

Autres conseils

Mettre la fonction getTimeFrameFile ci-dessus SQLServer::CalculateProbabilityResults.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top