Note that there are some explanatory texts on larger screens.

plurals
  1. POGetting linking error while using STL containers
    text
    copied!<p>I am getting following linking error, while running my C++ code in VS2008 in which I have used C++ STL :</p> <pre><code>error LNK2001: unresolved external symbol "public: static class std::_Tree&lt;class std::::_Tmap_traits&lt;class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;, class std::allocator&lt;char&gt; &gt;,class std::basic_string&lt;char,struct std::char_traits&lt;char&gt; ,class std::allocator&lt;char&gt; &gt;,struct std::less&lt;class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std::allocator&lt;char&gt; &gt; &gt;,class std::allocator&lt;struct std::pair&lt;class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;,class std:: allocator&lt;char&gt; &gt; const ,class std::basic_string&lt;char,struct std::char_traits&lt;char&gt;, class std::allocator&lt;char&gt; &gt; &gt; &gt;,0&gt; &gt;::iterator parser::parsedDataIterator" (?parsedDataIterator@parser@@2Viterator@?$_Tree@V?$_Tmap_traits@V?$basic_string@DU?$ char_traits@D@std@@V?$allocator@D@2@@std@@V12@U?$less@V?$basic_string@DU?$char_traits @D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char _traits@D@std@@V?$allocator@D@2@@std@@V12@@std@@@2@$0A@@std@@@std@@A) parser.obj </code></pre> <p>I haven't associated any library with the code, don't know if there is there any need for the same.</p> <p>Below is the code that is compiling successfully:</p> <pre><code>//Including header file that just contains the class declaration #include "parser.h" //Static variable definitions... int parser::lang = -1; std::string parser::fullString; std::map&lt;std::string, std::string&gt; parser::parsedData; std::map&lt;std::string, std::string&gt;::iterator parsedDataIterator; std::stack&lt;char&gt; parser::symbolStack; //The parsing function used to parse XML content.. bool parser::XMLParser(std::string arg_String) { //Create empty strings... std::string tagText; std::string emptyString = ""; //Maintain count for string length int count = 0; //Loop over whole string... for(unsigned int i=0 ; i&lt;arg_String.length() ; i++) { //ignore white string when not reading internal tag text content... cout&lt;&lt;"Value of i : "&lt;&lt;i&lt;&lt;" ... Value of str.char is :"&lt;&lt;arg_String[i]&lt;&lt;endl; if(arg_String[i] == ' ' &amp;&amp; count==0) continue; if(arg_String[i] == '&lt;'){ symbolStack.push(arg_String[i]); tagText.clear(); } else if(arg_String[i] == '&gt;'){ symbolStack.pop(); parsedData[tagText] = ""; } else{ tagText.push_back(arg_String[i]); count++; } } if(symbolStack.empty()) { cout&lt;&lt;"XML parsing was successful :"&lt;&lt;endl; return true; } } bool parser::populateAndReturn(std::string arg_String) { bool status = false; status = XMLParser(arg_String); return status; } int main(int argc, char *argv[]) { std::string inputString = "&lt;html&gt;"; if(parser::populateAndReturn(inputString)) { for(parser::parsedDataIterator = parser::parsedData.begin(); parser::parsedDataIterator != parser::parsedData.end(); ++parser::parsedDataIterator) cout &lt;&lt; "Key: " &lt;&lt; (*parser::parsedDataIterator).first &lt;&lt; " Value: " &lt;&lt; (*parser::parsedDataIterator).second; } else cout&lt;&lt;"\nError encountered while parsing"; system("pause"); } </code></pre> <p>Code for "parser.h":</p> <pre><code>#pragma once #include&lt;iostream&gt; #include&lt;fstream&gt; #include &lt;map&gt; #include &lt;stack&gt; #include &lt;string&gt; using namespace std; class parser { static std::string fullString; //Declaring a map that will associate the tag with the container text. static std::stack&lt;char&gt; symbolStack; public: static std::map&lt;std::string, std::string&gt; parsedData; static std::map&lt;std::string, std::string&gt;::iterator parsedDataIterator; parser(){ } static int lang; static enum format{ XML, JSON, ZZZ = -1 }; static bool populateAndReturn(std::string arg_String); static bool XMLParser(std::string arg_String); }; </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload