Pregunta

Ok, así que estoy teniendo una cifra problema de probar el problema en mi código. Tengo una gran cantidad de código, así que sólo voy a publicar las partes pertinentes que están arruinando cuando compilo. Tengo la siguiente función en el interior de una clase y se compilará y todo marchará bien hasta que llame a la "CalculateProbabilityResults" de función y se ejecuta la séptima línea de código dentro de ella. He "de-comentó" esta línea de código en mi programa para que pueda encontrar más fácil. Estoy bastante seguro de que tengo las directivas # include adecuados necesarios ya que compila bien cuando no está llamando a la función, por lo que no puede ser el problema se puede? Sé que algunos de mis notación nombrar necesita un poco de ayuda, así que tenga conmigo. Gracias de antemano por la ayuda chicos.

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 de llamadas

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 ==========
¿Fue útil?

Solución

El compilador piensa que getTimeFrameFile es un método de SQL Server:

  

símbolo externo sin resolver "público: int __thiscall SQL Server :: getTimeFrameFile (int, int)"

, pero usted tiene que definir como una función gratuita:

int getTimeFrameFile(int timeInHours, int timeFrameSize) {

Cambio que a partir de una función gratuita a un método de la clase va a resolver el problema:

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

Otros consejos

Ponga la función anterior getTimeFrameFile SQLServer::CalculateProbabilityResults.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top