我创建了一个简单的SWIG包装器DLL,用于在Ruby中使用它。我使用VS2010 IDE完成了这个项目,链接http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn10
中提到了这些步骤这是一个简单的包装DLL,如上例所示。 但是当我尝试在Ruby中导入DLL时需要“示例”它会给出“分段错误”。
我对此做了一些调查。我尝试使用VS 2010 nmake生成动态库。通过使用以下方式生成MakeFile: 要求'mkmf' create_makefile( '例如')
生成的example.so可以在Ruby中成功导入。
我注意到使用VS 2010 IDE和使用相同编译器的nmake生成的动态库的大小存在很大差异。第一个接近824KB,第二个接近11KB。
任何人都可以建议为什么使用VS 2010 IDE生成的dll会崩溃,而使用nmake生成的dll使用包含文件的相同代码工作正常吗?
答案 0 :(得分:0)
使用VC 2010生成的dll崩溃的原因是因为使用的RUBY_LIB是静态lib,而nmake使用的是RUBY_LIB库的动态版本。