2013-09-21 38 views
0

我已經創建了一個簡單的SWIG封裝器DLL,以便在Ruby中使用它。我已經使用VS2010 IDE完成了這個項目,並且鏈接中提到了這些步驟。http://www.swig.org/Doc1.3/Ruby.html#Ruby_nn10使用VS2010 IDE生成的用於Ruby的SWIG封裝器DLL崩潰

這是一個簡單的包裝器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生成的工作正常,包括包裝文件在內的相同代碼?

回答

0

爲什麼使用VC 2010生成的DLL崩潰是因爲使用的RUBY_LIB是靜態庫,而nmake使用的是動態版本的RUBY_LIB庫。