首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于一个程序中库文件不同版本的冲突有关问题

2013-01-07 
关于一个程序中库文件不同版本的冲突问题现在要把自己写的模块A合到模块B中,2个模块都使用了sqlite库模块A

关于一个程序中库文件不同版本的冲突问题
现在要把自己写的模块A合到模块B中,2个模块都使用了sqlite库
模块A版本.so文件调用sqlite_ver是3.7.14显示加载调用
模块B是3.7.8隐式调用
把模块A的sqlite库名字改成和模块B不一样的,例如libsqlite3.so改成libsqliteex3.so
模块A的路径使用libsqliteex3.so,环境变量都是包括这2个库文件的
发现在模块A调用接口时返回的版本是3.7.8
而且在调用open_v2这个函数时,出现段错误,调用的函数指针不是空的
查了一下core,是在sqlite内部的某个地方,
困扰了好长时间,请帮忙指导一下
[解决办法]
这是程序链接导致的版本异常。A和B中都有同样名字的方法,所以链接程序根据自己的算法,随便选了一个将它链接到最终可执行文件中。这和你的库文件名没有啥关系。
编译过程中,确实可能会产生同一个函数的许多“副本”,这些副本最终会在链接时“去重”。

热点排行