2010-01-23 4 views
4

Ok, donc j'ai un problème pour essayer de trouver le problème dans mon code. J'ai beaucoup de code, donc je vais juste poster les parties pertinentes qui sont en train de se gâcher quand je compile. J'ai la fonction suivante à l'intérieur d'une classe et il compilera et tout ira bien jusqu'à ce que j'appelle la fonction "CalculateProbabilityResults" et il exécute la 7ème ligne de code à l'intérieur. J'ai "déconseillé" cette ligne de code dans mon programme afin que vous puissiez le trouver plus facilement. Je suis assez sûr que j'ai les bonnes directives #include nécessaires car il compile bien quand il n'appelle pas la fonction, donc cela ne peut pas être le problème peut-il? Je sais qu'une partie de ma notation de nommage a besoin d'un peu d'aide, alors s'il vous plaît, supportez-moi. Merci d'avance pour l'aide des gars.error LNK2019: symbole externe non résolu

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

Call Log

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)" ([email protected]@@[email protected]) referenced in function "public: int __thiscall SQLServer::CalculateProbabilityResults(int,int,int,int)" ([email protected]@@[email protected]) 
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 ========== 

Répondre

7

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 comme une fonction libre:

int getTimeFrameFile(int timeInHours, int timeFrameSize) { 

Changez cela d'une fonction libre à une classe moi cela résoudra le problème:

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

Merci ... cela a fait l'affaire! Je suis personnellement plus d'une personne théorique donc de temps en temps je vais bousiller et oublier les choses syntaxiques comme dire au compilateur quelle classe la fonction appartient à lol. –

1

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

Questions connexes