程序连接时出错,请大侠指点

asiaas 2003-08-22 09:42:30

我编译了两个库libpt.so 和libopent120.so,其中libopent120.so是依赖libpt.so 编译出来的。(这是t120协议)不过在连接一个应用程序时
cc -o tools/simple/obj_linux_x86_d/SimpleConnect tools/simple/obj_linux_x86_d/simple_connect.o -L/usr/lib -lpt -ldl -lpthread -L./lib_linux_x86_d -lopent120 -lstdc++
出现了很多错误(编译没问题),如:
tools/simple/obj_linux_x86_d/simple_connect.o(.text+0xad): In function `SimpleT120::SimpleT120[not-in-charge]()':
include/t123/TransportListener.h:62: undefined reference to `PString::PString[in-charge]()'
tools/simple/obj_linux_x86_d/simple_connect.o(.text+0xc1):include/t123/TransportListener.h:62: undefined reference to `PString::PString[in-charge]()'
tools/simple/obj_linux_x86_d/simple_connect.o(.text+0x171): In function `SimpleT120::SimpleT120[in-charge]()':
tools/simple/simple_connect.cpp:96: undefined reference to `PString::PString[in-charge]()'

./lib_linux_x86_d/libopent120.so: undefined reference to `PString::PString[not-in-charge]()'
./lib_linux_x86_d/libopent120.so: undefined reference to `PString::PString[not-in-charge](PString const&)'

其实,这些函数都是有定义的,只是在libpt.so 里,请教!!

还有就是,它怎么指明说在某个头文件(如include/t123/TransportListener.h)里没有定义什么东东,为什么而不是其他的头文件' ,
...全文
47 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
asiaas 2003-09-02
  • 打赏
  • 举报
回复
问题解决了,但是我还是不知道为什么。本来关于pwlib库有两个版本debug和release,开始时用的是release版本,后来改为debug的就可以了
asiaas 2003-08-25
  • 打赏
  • 举报
回复
cc -c -o tools/simple/obj_linux_x86_d/simple_connect.o -pipe -fPIC -Wall -g -DP_LINU -D_DEBUG -DPTRACING=1 -D_REENTRANT -DPHAS_TEMPLATES -DPMEMORY_CHECK=1 -Itools/simple -I/home/project/pwlib/include/ptlib/unix -I/home/project/pwlib/include -I./include tools/simple/simple_connect.cpp

cc -o tools/simple/obj_linux_x86_d/SimpleConnect tools/simple/obj_linux_x86_d/simple_connect.o -L/home/project/pwlib/lib -lpt -ldl -lpthread -L./lib_linux_x86_d -lopent120 -lstdc++

编译是没有问题的

zeng_xiangyang 2003-08-24
  • 打赏
  • 举报
回复
extern PString::PString试一下
fierygnu 2003-08-23
  • 打赏
  • 举报
回复
没明白,为什么要用gcc,都用g++才行。
bit7 2003-08-23
  • 打赏
  • 举报
回复
PString::PString 在哪里有定义,
使用-L编译参数带上该类型定义的库文件看看
asiaas 2003-08-23
  • 打赏
  • 举报
回复
就是还有错误,而且是一样的错误
fierygnu 2003-08-22
  • 打赏
  • 举报
回复
把-lopent120放到-lpt前边试试。
asiaas 2003-08-22
  • 打赏
  • 举报
回复
两个库都是用gnuc++编译器编译的。你说的c++文件用c编译器编译,我觉得很有道理。我这里我用g++,gcc各连接一次,结果错误居然是一样的
fierygnu 2003-08-22
  • 打赏
  • 举报
回复
你的两个库是用什么编译器编译的?你给出的cc是用了连接的,编译也要用C++。所有的库和应用都要用同一种C++编译器(因为mangle没有标准,不同的编译器有不同的方法)。
asiaas 2003-08-22
  • 打赏
  • 举报
回复
还有就是出现某个函数(在某个头文件里)没定义,我想不通,它凭什么指定那个头文件,而不是别的
asiaas 2003-08-22
  • 打赏
  • 举报
回复
不知道你所说的是不是把cc改为 g++,这样就调用c++编译器,我改了一下,没什么好转,还是那么多错误
fierygnu 2003-08-22
  • 打赏
  • 举报
回复
不好意思,刚注意到你是用C去连接C++库,这样是不行的,因为C++编译器对函数名进行了mangle,而C编译器是不会这样做的,所以同样的函数声明在C++里和C里编译出的符号是不同的,不能直接调用。
两个办法:
1、都用C++
2、库里要输出的函数用export "C"声明和定义。不过看你的应用,这个方法应该不合适。
asiaas 2003-08-22
  • 打赏
  • 举报
回复
试了的,我还在-lopent120后面多加了-lpt,都没有解决问题
你想当“李逍遥”式的“大侠”吗? 这里无需计算机基础,无需编程经验,你也不必是计算机专业的在校大学生....只要爱好游戏,怀揣梦想! 有一定自主学习能力,跟着刘老师从“编程小白”修炼为游戏研发“大虾”吧!!!学习好Unity,其先决条件是一定要有稳固、扎实的编程基础!课程 《C# For Unity系列之入门篇》配套学习资料链接:http://pan.baidu.com/s/1gflxreN 密码:sou5;刘老师讲Unity学员群(2) 497429806一、热更新系列(技术含量:中高级):A:《lua热更新技术中级篇》https://edu.csdn.net/course/detail/27087B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136二:框架设计系列(技术含量:中级): A:《游戏UI界面框架设计系列视频课程》https://edu.csdn.net/course/detail/27142B:《Unity客户端框架设计PureMVC篇视频课程(上)》https://edu.csdn.net/course/detail/27172C:《Unity客户端框架设计PureMVC篇视频课程(下)》https://edu.csdn.net/course/detail/27173D:《AssetBundle框架设计_框架篇视频课程》https://edu.csdn.net/course/detail/27169三、Unity脚本从入门到精通(技术含量:初级)A:《C# For Unity系列之入门篇》https://edu.csdn.net/course/detail/4560B:《C# For Unity系列之基础篇》https://edu.csdn.net/course/detail/4595C: 《C# For Unity系列之中级篇》https://edu.csdn.net/course/detail/24422D:《C# For Unity系列之进阶篇》https://edu.csdn.net/course/detail/24465四、虚拟现实(VR)与增强现实(AR):(技术含量:初级)A:《虚拟现实之汽车仿真模拟系统 》https://edu.csdn.net/course/detail/26618五、Unity基础课程系列(技术含量:初级) A:《台球游戏与FlappyBirds—Unity快速入门系列视频课程(第1部)》 https://edu.csdn.net/course/detail/24643B:《太空射击与移动端发布技术-Unity快速入门系列视频课程(第2部)》https://edu.csdn.net/course/detail/24645 C:《Unity ECS(二) 小试牛刀》https://edu.csdn.net/course/detail/27096六、Unity ARPG课程(技术含量:初中级):A:《MMOARPG地下守护神_单机版实战视频课程(上部)》https://edu.csdn.net/course/detail/24965B:《MMOARPG地下守护神_单机版实战视频课程(中部)》https://edu.csdn.net/course/detail/24968C:《MMOARPG地下守护神_单机版实战视频课程(下部)》https://edu.csdn.net/course/detail/24979

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧