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 的文档)。我遇到的第二个问题是 ruby​​ 似乎是雪豹上的通用二进制文件,但想要加载 x86_64 而不是 i386 版本(如图)。现在我必须在通用框架 x86_64 中重新编译所有依赖项。我确信有一种方法可以强制使用 i386,但我宁愿在可用的情况下获得 64 位支持。

于 2010-02-25T05:25:06.577 回答
-1

编译的库真的编译了吗?(而不仅仅是接口 SWIG 包装器)

动态链接器问题???该程序不知道您程序的库在哪里。尝试使用您的库目录设置LD_LIBRARY_PATH 。

于 2010-02-25T01:59:21.797 回答