469,917 Members | 1,989 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,917 developers. It's quick & easy.

Problems with ld: Unresolved error C++ compiling error

Hi Everyone,
The problem that I have involves program that searches for a certain string within a file. As seen in the code, I have declared a Strings class which overrides the string class in C++. Inside of this class, it has a function called findStr (replaces the find in string.h) which will return a 0 when it is able to find an occurrence within the file. If not, it will return a -1.
The Strings.h has the function Get_Line which is defined and the error
is shown below:

Strings.h:

void get_line( istream & );

ld: Unresolved:
String::get_line(std::basic_istream <char,
std::char_traits<char>&>)
The code segment follows this structure and does compile:

#include "Strings.h"
#include <fstream.h>

int main( int argc, char** argv)
{
fstream File;
Strings End_Of_Line;
File.open("/users/netgrps/sf305/test.txt", ios::in);
Strings output = "", Stored_Message="", Line(End_Of_Line);
int num_of_hits=0;
while( ! File.eof())

{
if(Line.findStr("Stat:") != 0)
{
num_of_hits++;

if(num_of_hits == 2)
break;
}

if(num_of_hits == 1)
Stored_Message += Line;

Line.get_line(File);
End_Of_Line = Line;

}
cout << Stored_Message << endl;
}

I opened the library that Strings.h is compiled into with the command
"nm -print" and the method exists. Any idea what may be the problem?

Feb 13 '07 #1
2 1747
st********@gmail.com wrote:
Hi Everyone,
> The problem that I have involves program that searches for a certain string within a file. As seen in the code, I have declared a Strings class which overrides the string class in C++. Inside of this class, it has a function called findStr (replaces the find in string.h) which will return a 0 when it is able to find an occurrence within the file. If not, it will return a -1.

The Strings.h has the function Get_Line which is defined and the error
is shown below:

Strings.h:

void get_line( istream & );

> ld: Unresolved:
String::get_line(std::basic_istream <char,
std::char_traits<char>&>)

>The code segment follows this structure and does compile:


#include "Strings.h"
#include <fstream.h>
Fstream.h is non-standard. Should be

#include <fstream>
using std::fstream;
>
int main( int argc, char** argv)
{
fstream File;
Strings End_Of_Line;
File.open("/users/netgrps/sf305/test.txt", ios::in);
Strings output = "", Stored_Message="", Line(End_Of_Line);
int num_of_hits=0;
while( ! File.eof())

{
if(Line.findStr("Stat:") != 0)
{
num_of_hits++;

if(num_of_hits == 2)
break;
}

if(num_of_hits == 1)
Stored_Message += Line;

Line.get_line(File);
End_Of_Line = Line;

}
cout << Stored_Message << endl;
}

I opened the library that Strings.h is compiled into with the command
"nm -print" and the method exists. Any idea what may be the problem?
Feb 13 '07 #2
st********@gmail.com wrote:
Hi Everyone,

> The problem that I have involves program that searches for a certain string within a file. As seen in the code, I have declared a Strings class which overrides the string class in C++. Inside of this class, it has a function called findStr (replaces the find in string.h) which will return a 0 when it is able to find an occurrence within the file. If not, it will return a -1.


The Strings.h has the function Get_Line which is defined and the error
is shown below:

Strings.h:

void get_line( istream & );
> ld: Unresolved:
String::get_line(std::basic_istream <char,
std::char_traits<char>&>)


>>The code segment follows this structure and does compile:

#include "Strings.h"
#include <fstream.h>

int main( int argc, char** argv)
{
fstream File;
Strings End_Of_Line;
File.open("/users/netgrps/sf305/test.txt", ios::in);
Strings output = "", Stored_Message="", Line(End_Of_Line);
int num_of_hits=0;
while( ! File.eof())

{
if(Line.findStr("Stat:") != 0)
{
num_of_hits++;

if(num_of_hits == 2)
break;
}

if(num_of_hits == 1)
Stored_Message += Line;

Line.get_line(File);
End_Of_Line = Line;

}
cout << Stored_Message << endl;
}

I opened the library that Strings.h is compiled into with the command
"nm -print" and the method exists. Any idea what may be the problem?
Are you sure you are linking your program with the library containing
get_line? Have you got consistant compiler flags etc. for the library
compile and the program compile? Are you using shared libraries or
static libaries, etc. etc.

Clearly you are using your tools incorrectly but this isn't really a C++
issue, it's a tools issue. Suggest you ask on a different group, and
supply a bit more information. I'd guess it's the *way* you are
compiling and linking, not the code that you are compiling and linking.

john
Feb 13 '07 #3

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

15 posts views Thread by Rob Ratcliff | last post: by
2 posts views Thread by Freddy | last post: by
1 post views Thread by Tony Baker | last post: by
5 posts views Thread by cschettle | last post: by
10 posts views Thread by Ian Lazarus | last post: by
8 posts views Thread by mickey22 | last post: by
3 posts views Thread by curious2007 | last post: by
reply views Thread by Ryan Gaffuri | last post: by
2 posts views Thread by =?Utf-8?B?YmFzaA==?= | last post: by
1 post views Thread by Waqarahmed | last post: by
reply views Thread by Salome Sato | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.