2013-05-07 44 views
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) 

我知道我的問題是非常具體的,所以我並不指望一個神奇的答案;我會很高興任何人發佈有關問題出現的建議。

回答

0

終於弄清楚發生了什麼。在no-undefined標誌中的一個拼寫錯誤(它實際上是wl, - no-undefined)阻止我意識到我錯過了一些庫鏈接:-lMagick ++ -lMagickWand -lMagickCore