Domanda

Ok, quindi sto avendo un problema cercando capire il problema nel mio codice. Ho un sacco di codice in modo da sto solo andando a inviare le parti pertinenti che sono in disordine quando compilo. Ho la seguente funzione all'interno di una classe e sarà la compilazione e tutto in grado di funzionare fino a che io chiamo il "CalculateProbabilityResults" funzione e si corre il 7 ° riga di codice all'interno di esso. Ho "de-ha commentato:" questa riga di codice nel mio programma in modo da poter trovare più facile. Sono abbastanza sicuro che ho le direttive #include giusti necessario in quanto si compila bene quando non si chiama la funzione, in modo che non può essere il problema può? So che alcuni di mia notazione denominazione ha bisogno di un piccolo aiuto, quindi per favore abbiate pazienza con me. Grazie in anticipo per l'aiuto ragazzi.

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

Registro chiamate

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 ==========
È stato utile?

Soluzione

Il compilatore pensa che getTimeFrameFile è un metodo SQLServer:

  

simbolo esterno non risolto "public: int __thiscall SQLServer :: getTimeFrameFile (Int, int)"

, ma lo avete definito come una funzione libera:

int getTimeFrameFile(int timeInHours, int timeFrameSize) {

Cambia che da una funzione libera per un metodo di classe risolverà il problema:

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

Altri suggerimenti

Mettere la funzione getTimeFrameFile sopra SQLServer::CalculateProbabilityResults.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top