4

Ok, so I'm having a problem trying figure out the problem in my code. I have a lot of code so I'm only going to post the relevant parts that are messing up when I compile. I have the following function inside of a class and it will compile and everything will run fine until I call the function "CalculateProbabilityResults" and it runs the 7th line of code within it. I've "de-commented" this line of code in my program so you can find it easier. I'm pretty sure I have the right #include directives needed since it compiles fine when not calling the function, so that can't be the problem can it? I know some of my naming notation needs a little help, so please bear with me. Thanks in advance for the help guys.

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)" (?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 ========== 

2 Answers 2

7

The compiler thinks that getTimeFrameFile is a SQLServer method:

unresolved external symbol "public: int __thiscall SQLServer::getTimeFrameFile(int,int)"

but you have it defined as a free function:

int getTimeFrameFile(int timeInHours, int timeFrameSize) { 

Change that from a free function to a class method will solve the problem:

int SQLServer::getTimeFrameFile(int timeInHours, int timeFrameSize) 
Sign up to request clarification or add additional context in comments.

1 Comment

Thanks...that did the trick! I'm personally more of a theoretical person so every now and then I'll screw up and forget the syntactical things like telling the compiler which class the function belongs to lol.
1

Put the function getTimeFrameFile above SQLServer::CalculateProbabilityResults.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.