Re: Need help with loading .SO file
- From: Michael Schlenker <schlenk@xxxxxxxxxxxxxxxx>
- Date: Wed, 30 Aug 2006 11:27:25 +0200
ShurikAg@xxxxxxxxx schrieb:
Tobias Hippler wrote:
ShurikAg@xxxxxxxxx wrote:
There is Proc.cpp:Hi,
#include "tcl.h"
//#pragma comment(lib,"C:/TCL/lib/tcl84.lib")
int GetText(ClientData clientData,
Tcl_Interp *interp,
int argc, char *argv[]);
int Proc_Init(Tcl_Interp *interp)
{
if (Tcl_InitStubs(interp, "8.3", 0) == NULL) {
return TCL_ERROR;
}
Tcl_CreateCommand(interp, "gettext", GetText,
(ClientData)NULL, (Tcl_CmdDeleteProc *)NULL);
Tcl_PkgProvide(interp, "gettext", "1.1");
return TCL_OK;
}
int GetText(ClientData clientData, Tcl_Interp *interp, int argc, char
*argv[])
{
sprintf(interp->result, "%d", 25);
return TCL_OK;
}
Compiling: gcc -fPIC -c Proc.cpp
Linking: gcc -shared -o Proc.so Proc.o
Entering to TCL: wish8.3
Trying to load the Library: % load
/nfs/iil/disks/home05/aagulya/TCL/Proc.so
... and getting the error: couldn't find procedure Proc_Init
Where am I wrong????
you have to add extern "C" in front of the definition of Proc_Init:
extern "C" int Proc_Init(Tcl_Interp *interp)
{
if (Tcl_InitStubs(interp, "8.3", 0) == NULL) {
return TCL_ERROR;
...
...
}
Otherwise the symbols of your *.so get mangled (c++ - style) and the
runtime loader can't find the symbol "Proc_Init".
BTW if you don't have to use C++, you can simply rename your file to
"Proc.c". This way the C compiler is used and no name mangling occurrs.
Cheers,
Tobi
Thanks, Tobi.
You are right.
But my main problem is compiling this the static TCL library.
If I'm trying to copile like this: gcc -fPIC -c Proc.cpp
the tcl loader screaming about unresolved simbles; as far as I
understand it happens because I did not compile my prog with out
libtk8.3.a.
How do I suppose to do it?
I think it somthing like: gcc -fPIC -l libtk8.3.a -c Proc.cpp
But it doesn't work...
Its the wrong lib. You initialize STUBS in your code, so link with the
stubs lib and define -DUSE_TCL_STUBS during compile. libtclstub8.3.a is
the lib in your case.
Michael
.
- Follow-Ups:
- Re: Need help with loading .SO file
- From: ShurikAg
- Re: Need help with loading .SO file
- References:
- Need help with loading .SO file
- From: ShurikAg
- Re: Need help with loading .SO file
- From: Tobias Hippler
- Re: Need help with loading .SO file
- From: ShurikAg
- Need help with loading .SO file
- Prev by Date: Re: how to limit the usable canvas area
- Next by Date: Re: Need help with loading .SO file
- Previous by thread: Re: Need help with loading .SO file
- Next by thread: Re: Need help with loading .SO file
- Index(es):
Relevant Pages
|