2
我最近继承了Ruby on Rails项目的开发,主要关注于提供一些高级图像分析功能的两个自定义库的用户界面。在ruby中使用C++ .so库的未解决符号
当我启动WEBrick服务器,它似乎工作,但只要我尝试上传一些图片,并共享对象需要使用,我得到:
> MagickppAPI::LoadImagesList
> Magick::readImages
ruby: symbol lookup error: /usr/local/lib/site_ruby/1.8/i486-linux/cargadorlib.so: undefined symbol: CloneImageInfo
我试着在编译库时传递--no-undefined,所以它不允许未定义的符号,但它编译成功。此外,LDD不显示该库中的任何未定义符号:
[email protected]:/usr/local/lib/site_ruby/1.8/i686-linux$ ldd cargadorlib.so
linux-gate.so.1 => (0xb77ca000)
libruby1.8.so.1.8 => /usr/lib/libruby1.8.so.1.8 (0xb769a000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7681000)
libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb767c000)
libcrypt.so.1 => /lib/tls/i686/cmov/libcrypt.so.1 (0xb764a000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7555000)
libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb752f000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb73d0000)
/lib/ld-linux.so.2 (0xb77cb000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb73b0000)
librt.so.1 => /lib/tls/i686/cmov/librt.so.1 (0xb73a7000)
我知道我的问题是非常具体的,所以我并不指望一个神奇的答案;我会很高兴任何人发布有关问题出现的建议。