[cpp] Freebsd 中共享库中函数冲突的问题

sunpluto sunpluto2004 at yahoo.com.cn
Wed Apr 5 10:27:05 CST 2006


最近在写一个 PHP 的 C++ 共享库插件
   
  编译插件共享库时使用了自己的图形库(静态库,连接入共享库插件中)
   
  而自己的图形库中使用了经过改动过的 jpeglib 库(版本号 61)
   
  使用 ldd 察看 php 执行文件时,发现其已经依赖了系统提供的 libjpeg.so.9 (版本号为 62 的 jpeglib 库)
   
  因此在使用 ./php myscript.php 执行脚本利用自己的共享库插件读取图片时,无法调用到自己图形库中的 jpeglib 库(版本号 61)的相关读取函数,反而调用了 php 加载的 libjpeg.so.9 中的相关读取函数,导致了一个 libjpeg 库的版本不兼容问题,提示如下:
   
  Wrong JPEG library version: library is 62, caller expects 61
   
  在经过一个晚上后,再次调用时遽然没有发生版本冲突的问题,但重新编译插件共享库后,问题依旧
   
  请问,Unix 系统中,应用程序使用多个共享库时,若不同共享库中存在相同函数时,怎样能保证 A 共享库中的函数在调用这些存在冲突的相同函数时,不会调用到 B 等其他共享库的相同函数 
   
  不知道我的问题表述的是否清楚
  我找了好几天了,仍未解决,希望能在这个社群里找到答案
  先谢谢大家啦
   


致
礼
		
---------------------------------
 雅虎1G免费邮箱百分百防垃圾信
 雅虎助手-搜索、杀毒、防骚扰  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://codingnow.com/pipermail/cpp/attachments/20060405/127d35af/attachment.html


More information about the Cpp mailing list