o.otto@reading.ac.uk (Oliver) wrote in message news:<f5f070bf.0310130249.4996a53a@posting.google. com>...[color=blue]
> Hi,
>
> I have a problem with a shared library of mine. I compile the *.o
> files and then generate the .so lib with:
> cc -shared libjava_vrpn.so *.o
> When I then run my program I get an error for an unresolved symbol.
>
> The symbols it's looking for are in another library called libvrpn.a,
> but for some unknown reason the compiler does not uses this library
> when I tell him to used.
> I compile the libs as before and then try:
> cc -shared -L../sgi_irix.../ -lvrpn -o libjava_vrpn.so *.o
> The compiler then comes with a waring that the libvrpn.a is not used
> for resolving any symbol and my application is still complaining about
> the first unresolved symbol.
>
> When use the command nm to check the library's I can see that the
> sybol could be resolved by using the libvrpn.a. What do I do wrong?
> What is it that I have to do to make use of the other library?[/color]
Okay, since you post this in comp.lang.c++, I'm just going to take a
wild guess here.
By any chance are the function in libvrpn.a compiled as C functions
but the header file for that library does not surround the prototypes
with extern "C" { }?
I haven't used SGI much, but on Solaris you will see something like
this:
From the linker:
Unresolved external:
void foo(int)
From nm:
foo ...
While they seem the same they are not. The first one includes C++
type safe linkage while the second one is plain old C linkage.
samuel