0

我创建了一个简单的 SWIG 包装 DLL 用于在 Ruby 中使用它。我已经使用 VS2010 IDE 完成了这个项目,链接中提到了这些步骤http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn10

如上例所示,它是一个简单的包装 DLL。但是当我尝试在 Ruby 中导入 DLL 时需要“示例”,它给出了“分段错误”。

我对此进行了一些调查。我尝试使用 VS 2010 nmake 生成动态库。MakeFile 是通过使用生成的: require 'mkmf' create_makefile('example')

生成的 example.so 可以成功导入 Ruby。

我注意到使用 VS 2010 IDE 和使用相同编译器的 nmake 生成的动态库的大小存在很大差异。第一个接近 824KB,第二个是 11KB。

谁能建议为什么使用 VS 2010 IDE 生成的 dll 崩溃,而使用 nmake 生成的 dll 使用相同的代码(包括包装文件)工作正常?

4

1 回答 1

0

使用 VC 2010 生成的 dll 崩溃的原因是使用的 RUBY_LIB 是静态库,而 nmake 使用的是动态版本的 RUBY_LIB 库。

于 2013-09-24T08:00:54.077 回答