linux链接动态库提示某个函数找不到 undefined xxx
来源:互联网 发布:航天税控软件 编辑:程序博客网 时间:2024/06/03 20:57
声明:本人是菜鸟,学习阶段,不对之处请不吝赐教
在学习tinyxml库时,写了个小程序,提示start.S:109: undefined reference to `main',网上各种答案,基本如下几种情况
1、确实缺少main
2、编译选项不对
3、其他问题导致
我的是编译选项不对,修改后编译通过;抱歉,怎么解决的没记住。
我是用c来调用tinyxml库,tinyxml的库是c++实现的,所以用了一个中间层的parsexml.cpp来转接,实现两个函数GetAllNodePara是调用tinyxml编译生成的库函数实现xml文档获取
GetAllNodeParaInterface封装一下提供给c语言用
int GetAllNodePara(TiXmlNode * baseNode, tXmlNodeListDef * pNodeList, int startLevel, tXmlNodeAddrDef *pNodeAddr);
int GetAllNodeParaInterface(char * xmlfile, tXmlNodeListDef * pNodeList, tXmlNodeAddrDef * pNodeAddr);
代码编译完成后,用main.c调用GetAllNodeParaInterface,编译是总是提示该函数找不到,我核对已经用extern "C"进行过定义,是的parsexml.cpp的接口函数用"C"的约定来编译;(c和c++的动态库可以互相调用,网上大能都建议不要混用,对于有些只熟悉一门语言的就比较难办了)
编译生成libparsexml.so过程中没有问题,但用nm -D libparsexml.so发现没有自己编写的函数(也可以用readelf查看),如下图所示,自己写的两个函数没有,调用的libtinyxml.so的库函数也没有,那么问题应该是出在编译过程中。
重新核对代码,发现中间存在很多问题,但奇怪编译器竟然没有报错,成功的编译了libparsexml,so,后来我想肯定是我的代码拼写问题导致。
修改了多处低级错误,比如if(NULL = pName) (少了个等号)之后编译成功,成功后的libparsexml.so再用nm -D 查看如下图,多了很多东西
写下这篇博客的目的是提醒自己以及在学习编程的初学者,很多时候编译输出的问题并不是问题点直接能看出来的,有可能是其他地方出了问题导致的,linux编译尤其如此。
所以初学的如果用了复杂一点结构体、指针、链接了动态库之类的,如果编译出了问题,在找不到问题时,最好将自己的代码重新过一遍。
- linux链接动态库提示某个函数找不到 undefined xxx
- linux找不到动态链接库
- freemarker文件提示找不到SCRIPT5009: 'xxx' is undefined可能原因
- linux下找不到动态链接库
- linux下找不到动态链接库
- Linux 动态链接库找不到的解决办法
- Linux下找不到动态链接库
- 注册动态链接库(dll文件),提示找不到入口点
- linux找不到动态链接库 .so文件的解决方法
- 【linux c开发】GCC 编译链接后找不到动态库
- linux找不到动态链接库 .so文件的解决方法
- linux找不到动态链接库 .so文件的解决方法
- linux找不到动态链接库 .so文件的解决方法
- Linux程序运行时找不到动态链接库的原因
- linux找不到动态链接库 .so文件的解决方法
- linux找不到动态链接库 .so文件的解决方法
- linux找不到动态链接库 .so文件的解决方法
- 关于linux动态库链接找不到的问题
- NOIP2001 统计单词个数 rabin-karp哈希
- 【第七周】项目1-建立顺序环形队列算法库
- linux netlink机制
- libpcap详解
- nfs服务器搭建
- linux链接动态库提示某个函数找不到 undefined xxx
- 第十一周 项目1 — 图基本算法库
- 查询模块里的是类还是函数
- 欢迎使用CSDN-markdown编辑器
- (DataTable_checkbox复选框)批量审核全流程(前台到服务器)
- Centos7安装Nginx最新版本
- python之tkinter中的几何布局管理
- 第9周项目3- 利用二叉树遍历思想解决问题(2)
- 第十一周项目二——操作用邻接表存储的图