Ruby,C ++,Swig一些未导出的类

时间:2010-02-25 01:50:25

标签: c++ ruby swig

我一直在努力让我的库c ++ Lavish使用swig使用ruby。问题是只能使用我在接口文件中包含的一些类,并且在编译bundle或在ruby中加载时我没有遇到任何错误。我的swig界面文件可以查看here

一个有效和无效的例子。

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接口文件中包含了标题,所以我不知道在哪里查找错误。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

原来这是一些问题,首先关闭extconf.rb文件,该文件为swig包装器生成makefile而不是试图在框架中链接(swig需要更新osx的文档)。我遇到的第二个问题是,ruby似乎是雪豹的通用二进制文件,但是想要加载x86_64而不是i386版本(去图)。现在我必须在通用框架x86_64中重新编译所有依赖项。我确信有一种方法可以强制使用i386,但我宁愿在可用的情况下提供64位支持。

答案 1 :(得分:-1)

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

动态链接器问题???该程序不知道您的程序库位于何处。尝试使用库目录设置 LD_LIBRARY_PATH