0

私は自分のライブラリ c++ Lavish を swig を使って ruby​​ で動作させることに取り組んできました。問題は、インターフェイス ファイルに含めたクラスの一部しか使用できず、バンドルのコンパイル中または ruby​​ への読み込み中にエラーが発生しないことです。私のswigインターフェースファイルはここで見ることができます.

何が機能し、何が機能しないかの例。

sean$ irb
>> require "lavish"
=> true
>> v1 = Lavish::Vector2.new(1,2)
=> #<Lavish::Vector2:0x1011a25a0>
>> puts v1.x
1.0
=> nil
>> display = Lavish::Display.new
dyld: lazy symbol binding failed: Symbol not found: __ZN6lavish7DisplayC1Ev
  Referenced from: /Users/seanc/Desktop/Lavish/samples/ruby/Tutorial 2 - Displaying A Triangle/lavish.bundle
  Expected in: flat namespace

dyld: Symbol not found: __ZN6lavish7DisplayC1Ev
  Referenced from: /Users/seanc/Desktop/Lavish/samples/ruby/Tutorial 2 - Displaying A Triangle/lavish.bundle
  Expected in: flat namespace

Trace/BPT trap

C++ で Display オブジェクトを作成でき、swig インターフェース ファイルにヘッダーを含めたので、どこで何が問題なのかわかりません。

何か案は?

4

2 に答える 2

0

それはいくつかの問題であることが判明しました。最初に、swigラッパーのmakefileを生成するextconf.rbファイルがフレームワークにリンクしようとしていませんでした(swigにはos xの更新されたドキュメントが必要です)。私が抱えていた2番目の問題は、ルビーがユキヒョウのユニバーサルバイナリのように見えるが、i386バージョンではなくx86_64をロードしたいということでした(図を参照)。次に、ユニバーサルフレームワークx86_64ですべての依存関係を再コンパイルする必要があります。i386を強制する方法があると確信していますが、利用可能な場合は64ビットをサポートしたいと思います。

于 2010-02-25T05:25:06.577 に答える
-1

コンパイルされたライブラリは本当にコンパイルされていますか?(そして、インターフェイスSWIGラッパーだけではありません)

動的リンカーの問題??? プログラムは、プログラムのライブラリがどこにあるかを知りません。ライブラリディレクトリでLD_LIBRARY_PATHを設定してみてください。

于 2010-02-25T01:59:21.797 に答える