我创建了一个简单的 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 使用相同的代码(包括包装文件)工作正常?