title: LNK2019: Unresolved External Symbol ... Referenced in function _main
body: <p>I am taking an introductory programming class, so I hope this issue isn't too terrible. I have fixed all of the problems in my Main function so far, but then I uncommented my Blob function call and an error came up that I apparently just can not figure out. I have researched it already and have not found anything that fits my problem well enough. </p>
  
  <p>I believe it has something do with the **'s that I added to fix a previous problem with my 2D array (which is required for the assignment). I have included the comments at the top of the code to clarify the objectives of the program. </p>
  
  <p>The error is:</p>
  
  <blockquote>
    <p>error LNK2019: unresolved external symbol "void __cdecl Blob(char *
    *,int,int)" (?Blob@@YAXPAPADHH@Z) referenced in function _main    c:\Users\Laura\documents\visual studio 2010\Projects\pr9_lt12e\pr9_lt12e\p9_lt12e.obj</p>
  </blockquote>
  
  <p>Also, the first line of the array that is output is offset 10 spaces to the left. Column 13 should have an 'X', but it shows up at 3. I have changed the values of the array manually so that arr[0][12] = 'X' (before the array is printed out) but the position did not change. I can still use the program without this being fixed because it will only be a few points off.</p>
  
  <p>My entire code is:</p>
  
  <pre><code>/*
           SUMMARY 
             This program will read in data from a file and store it in a two-dimensional array. 
             From there it will detect all of the groupings of characters, or "blobs", in the file and count them.
  
           INPUT 
             The program will read in information from a file called "blob.txt".
  
             BAD DATA CHECKING: 
                  N/A
  
           OUTPUT 
              The program will output the amount of blobs in the file.
  
           DATA STRUCTURES
              N/A
  
           ASSUMPTIONS  
            -The file will have 20 records. Each record will be 70 characters long and the character 
              will be either an X or a blank space/whitespace.
  
  */
  
  #include &lt;iostream&gt;
  #include &lt;iomanip&gt;
  #include &lt;cmath&gt;    
  #include &lt;fstream&gt;
  #include &lt;string&gt;
  using namespace std;
  
  //GLOBAL CONSTANTS
  const int   ONE_D = 22,
              TWO_D = 72,
              SEVEN = 7;
  
  const char  X = 'X',
              B = ' ';
  
  //FUNCTION PROTOTYPES
  void Blob(char**, int, int);    //Retrieves data from the file and places it into the array
  
  
  //MAIN FUNCTION
  int main()
  {
      //Declare variables
      ifstream file;
  
      string line;
  
  //  char character;
  
      int index1 = 0,
          index2 = 0,
          col1 = 0,
          col2 = 0,
          blobCount = 0;
  
      //Declare the 2D array. From course website.
      char ** arr;
      arr = new char * [ONE_D];
      for (index1 = 0; index1 &lt; ONE_D; index1++)
          arr[index1] = new char [TWO_D];
  
      //Welcome message
      cout &lt;&lt; "Welcome to the Recursive Blob Finder program!\n\n";
  
      //Open the file
      file.open("blob.txt");
  
      //Check to see if file has been opened
      if (file.is_open())
          cout &lt;&lt; "The file has been opened!\n\n";
      else
          cout &lt;&lt; "The file has not been opened!\n\n";
  
      //Read in data from the file and write to the array
      for (index1 = 0; index1 &lt; 20; index1++) {
          getline(file, line);
          strcpy_s(arr[index1], 72, line.c_str()); 
      }
  
      ////Row 1 is offset by -10. Adjust first row.
      //arr[0][2] = B;
      //arr[0][12] = X;
  
      //Clear non-'X' cells
          for (index1 = 0; index1 &lt; 22; index1++) {
              for (index2 = 0; index2 &lt; 72; index2++) {
                  if (arr[index1][index2] != X)
                      arr[index1][index2] = B;
              }
          }
  
      //Print numbered lines
      for (col1 = 1; col1 &lt; 8; col1++)    
          cout &lt;&lt; "         " &lt;&lt; col1;
  
      cout &lt;&lt; endl;
  
      for (col2 = 1; col2 &lt; 8; col2++)    
          cout &lt;&lt; "1234567890";
  
      cout &lt;&lt; endl;    //EDIT IS HERE
  
      //Print array
      for (index2 = 0; index2 &lt; 20; index2++) {
  
          for (index1 = 0; index1&lt; 70; index1++)
              cout &lt;&lt; arr[index2][index1];
  
          cout &lt;&lt; endl;
      }
  
      //Search array for 'X' characters
      for (index1 = 0; index1 &lt; 20; index1++)     {
  
          for (index2 = 0; index2 &lt; 70; index2++) {
  
              //When X is found, add 1 to blob count. Blob function will clear out the remaining blob characters
              if (arr[index1][index2] == X)   {
                  blobCount++;
                  Blob(arr, index1, index2);
              }
          }
      }
  
      //Close the file
      file.close();
  
      return 0;
  
  }
  
  
  //OTHER FUNCTIONS   
  
  //Name: Blob
  //Description:  Recursive function to find and clear each blob.
  void Blob(char **c[ONE_D][TWO_D], int row, int col)  
  {
          //Eliminate one blob at a time
  
      //Potential positions for 'X' after clearing the last X:         Ox
      //                                                              xxx
  
  
      if (**c[row][col]==X)   {
          **c[row][col] = B;
  
          //Test for X's connected to current blob
          if (**c[row][col+1]==X)
              Blob (c, row, col);
  
          if (**c[row+1][col-1]==X)
              Blob (c, row, col);
  
          if (**c[row+1][col] == X)
              Blob (c, row, col);
  
          if (**c[row+1][col+1]==X)
              Blob (c, row, col);
      }   
  }
  </code></pre>
  
  <p>Some things I have tried include changing the prototype:</p>
  
  <pre><code>void Blob(char** c[ONE_D][TWO_D], int, int);
  </code></pre>
  
  <p>function call:</p>
  
  <pre><code>Blob(arr[][], index1, index2);
  Blob(arr[][72], index1, index2);
  Blob(arr[22][72], index1, index2);
  </code></pre>
  
  <p>and function definition parameters:</p>
  
  <pre><code>void Blob(char c[ONE_D][TWO_D], int row, int col)
  </code></pre>