On Tue, May 18, 2010 at 6:13 PM, DDD <[email protected]> wrote:
> Chris Miller wrote:
>> On Mon, May 17, 2010 at 6:49 PM, DDD <[email protected]> wrote:
>> > Hi,
>> > By default all symbols are visible in a linux shared library, but in
>> > my case some class doesn't been exported?
>> >
>> > Any suggestions?
>>
>> Sure it isn't namespace private?
>>
>
> Thanks very much for your answer.  And Maybe I have to describe the
> question clearly.
>
> Using nm to check the .so, some functions be showed with t tag, such
> as
> $> nm libmy.so
> ...
> 00000080 t Close()
> ...
>
> And t means CLose function is a local symbol, cann't be used by
> another program.
>
> Is that right?

http://linux.die.net/man/1/nm

| "T"
| The symbol is in the text (code) section.

I have no idea what that means.  It is also possible that your library
is using a calling convention that C/C++ or whatever you're using
can't handle.  (Although I thought that GCC normalised .so files to a
standard calling convention?)

Also applicable is that if you're linking against a .so file, you need
a header to declare what's in there.  Because Close() lacks any C++
name munging, I'd imagine it's a C function, in which case you'd need
to declare it like so:

extern "C" {
    void Close();
}

Or whatever the actual function signature is.

I'm just speculating wildly though; chances are you haven't imported
the right header or something if you're having to tear apart a .so
file looking for function signatures.

-- 
Registered Linux Addict #431495
For Faith and Family! | John 3:16!
http://www.fsdev.net/

-- 
You received this message because you are subscribed to the Linux Users Group.
To post a message, send email to [email protected]
To unsubscribe, send email to [email protected]
For more options, visit our group at 
http://groups.google.com/group/linuxusersgroup

Reply via email to