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