- 论坛徽章:
- 0
|
我最近在封装一个 so,开发环境是 sun solaris ,用c++
把 tuxedo的 一个功能 封装起来。 但是 却遇到了重定向问题:
开发环境是:
otaadmin@otas1> gcc -v
Reading specs from /usr/local/lib/gcc/sparc-sun-solaris2.9/3.4.6/specs
Configured with: ../configure --with-as=/usr/ccs/bin/as --with-ld=/usr/ccs/bin/ld --enable-shared --enable-
languages=c,c++,f77
Thread model: posix
gcc version 3.4.6
otaadmin@otas1> uname -a
SunOS otas1 5.9 Generic_117171-10 sun4u sparc SUNW,Sun-Fire-480R
so的代码是:
//----------------------------------------------------------
bool Init(char* szServerIP,char* szPort)
{
int nRet = 0;
if(m_tuxedoOpen)
return true;
else
{
char szConn[200];
memset(szConn,0,200);
sprintf(szConn,"WSNADDR=//%s:%s",szServerIP,szPort);
tuxputenv(szConn); //此处出现了调用函数重定向错误
tpinitbuf = (TPINIT *)tpalloc("TPINIT", NULL, TPINITNEED(0));
tpinitbuf->flags = TPMULTICONTEXTS;
static int init_times=0;
try
{
if (tpinit(tpinitbuf) == -1)
{
}
else
init_times = 0;
}
catch (...)
{
printf("\r\ntuxedo_init error\r\n");
return false;
}
m_tuxedoOpen = true;
return true;
}
}
//----------------------------------------------------------
我自己写了个 调用这个so的程序,程序名称是 testdemo,在程序运行到 tuxputenv(szConn); 这个函数的时候 出现了问题。
ld.so.1: ./testdemo: 致命的: 重定位错误: 文件/opt/TecomOTA/ota2/test/dipatch/patchdll.so: 符号tuxputenv: 参照的符号没有找到
我现在不知道,该怎么解决这个事情,只知道 ,g++ 封装so的时候 有好多 函数的名字都会被改的。那么,tuxputenv 这个函数 其实是
tuxedo的api,怎么也会有这个问题呢。奇怪了。请大侠们帮忙看看。给点提示。 |
|