I have this tow errors ,how I can solve it.any ideas?
error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib AC
fatal error LNK1120: 1 unresolved externals Debug\AC.exe AC
I have this tow errors ,how I can solve it.any ideas?
error LNK2019: unresolved external symbol _WinMain@16 referenced in function ___tmainCRTStartup MSVCRTD.lib AC
fatal error LNK1120: 1 unresolved externals Debug\AC.exe AC
Jump to PostIs this the complete code? Where are the variable declarations?
Jump to PostMost probably you have defined entry point in linker advance setting in visual studio 2008. Make sure there is no additional entry point.
Generally a linker error is caused by calling a function that you don't have an implementation for. The linker throws and error saying "you've called this function, and I know it's supposed to exist, but I can't find it."
I don't get involved in Win32 programs, but I do know that WinMain and tmain are common alternate names for main() in Win32 programs. It looks like you need a WinMain but your current program has a tmain() instead.
I think you better post some code so that we can see what's actually going on.
int main(int argc, char* argv[])
{
//Inter the text file
cout<<"Enter text file name.\n";
cin>>text;
inFile2.open(text.c_str());
if ( !inFile2 )
{
cout<<"Unable to open file. Enter a different name: ";
inFile2.clear();
cin >> text;
inFile2.open(text.c_str());
}
char *T;
T = new char[10000];
//Read the file
while(getline(inFile2, line))
{
strcpy_s(T, 10000, line.c_str());
//convert char* to unicode
string search1 = T;
const size_t newsize1 = 10000;
size_t origsize = strlen(search1.c_str()) + 1;
size_t convertedChars = 0;
wchar_t wcstring1[newsize1];
mbstowcs( wcstring1, search1.c_str(), newsize1);
//wcscat_s(wcstring1, L" (wchar_t *)");
wcout << wcstring1 << endl;
// perform the search.
aDataFound=aTree.SearchAhoCorasikMultiple( wcstring1 );
for (int iCount=0;
iCount<aDataFound.size();
++iCount)
printf(" AC Match Found : %S \n",aDataFound[iCount].sDataFound.c_str());
}
return 0;
}
Is this the complete code? Where are the variable declarations?
ifstream inFile1, inFile2;
string pattern,text,line;
I deleted part of the code to be easy to read , the problem started in the code when I added this part
aDataFound=aTree.SearchAhoCorasikMultiple( wcstring1 );
for (int iCount=0; iCount<aDataFound.size(); ++iCount) printf(" AC Match Found : %S \n",aDataFound[iCount].sDataFound.c_str));
when i move this part out of the while loop its working if I assigned the function in line 49 static data like L"asfasdgadgd"
How is aTree.SearchAhoCorasikMultiple() defined? Are you using wcstring1 correctly for the function's expected argument/parameter?
Most probably you have defined entry point in linker advance setting in visual studio 2008. Make sure there is no additional entry point.
the definition of the function is
CSuffixTrie::DataFoundVector CSuffixTrie::SearchAhoCorasikMultiple(const SearchString& rString)const
{
//Our vector of data found
DataFoundVector aVec;
//The current string we match
SearchString sMatchedString;
//Our node position
const Node* pNode;
pNode=&m_aRoot;
//Iterate the string
for (int iCount=0;
iCount<rString.length();
++iCount)
{
//Did we switch node already
bool bSwitch;
bSwitch=false;
//Loop while we got something
while (1)
{
//Look for the char
SearchMap::const_iterator aIterator;
aIterator=pNode->aMap.find(rString[iCount]);
//Do we have it?
if (aIterator==pNode->aMap.end())
//No, check if we have failure node
if (!pNode->pFailureNode)
{
//No failure node, start at root again
pNode=&m_aRoot;
//Reset search string
sMatchedString=L"";
//Did we do a switch?
if (bSwitch)
//We need to do this over
--iCount;
//Exit this loop
break;
}
else
{
//What is the depth difference?
unsigned short usDepth;
usDepth=pNode->usDepth-pNode->pFailureNode->usDepth-1;
//This is how many chars to remove
sMatchedString=sMatchedString.substr(usDepth,sMatchedString.length()-usDepth);
//Go to the failure node
pNode=pNode->pFailureNode;
//Set to switch
bSwitch=true;
}
else
{
//Add the char
sMatchedString+=rString[iCount];
//Save the new node
pNode=aIterator->second;
//Exit the loop
break;
}
}
//Is this a final node?
if (pNode->bFinal)
{
//We got our data
DataFound aData;
aData.iFoundPosition=iCount-sMatchedString.length()+1;
aData.sDataFound=sMatchedString;
//Insert it
aVec.push_back(aData);
//Go back
iCount-=sMatchedString.length()-1;
//Reset the data
sMatchedString=L"";
}
}
//Done
return aVec;
}
Most probably you have defined entry point in linker advance setting in visual studio 2008. Make sure there is no additional entry point.
I checked it no entry point .................Thanks
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/14e85604-6929-4707-a22e-8cdf596926a6
This link will help you.
http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/14e85604-6929-4707-a22e-8cdf596926a6
This link will help you.
Thank you , the problem is solved :)
We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.