Bug #16117
Updated by kou (Kouhei Sutou) almost 6 years ago
I have a dll build by MinGW32 in windows7, in ruby2.2, I could use fiddle dlload this dll success, but in the same system, use 2.6.3 failed to dlload this dll, always report No such file or direcoty. **///////// Ruby2.2 success load the dll and call function in dll /////////** ```text F:\TOOLCODE\coreclr_win\Navigator2-linux\src\ProtocolHost\HostTest\ruby\Mml>C:\TestTools\impeller\lib\Ruby\bin\ruby -v ruby 2.2.6p396 (2016-11-15 revision 56800) [i386-mingw32] F:\TOOLCODE\coreclr_win\Navigator2-linux\src\ProtocolHost\HostTest\ruby\Mml>C:\TestTools\impeller\lib\Ruby\bin\ruby testmml_win.rb F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\ Demo for invoke C# code from ruby... F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\ F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\libhostprotocol.dll Load CoreCLR from F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\ success CoreCLR Started success. F:\TOOLCODE\coreclr_win\Navigator2-linux\src\ProtocolHost\HostTest\ruby\Mml> ``` **///////// Ruby2.6.3 success load the dll and call function in dll /////////** ```text F:\TOOLCODE\coreclr_win\Navigator2-linux\src\ProtocolHost\HostTest\ruby\Mml>ruby -v ruby 2.6.3p62 (2019-04-16 revision 67580) [i386-mingw32] F:\TOOLCODE\coreclr_win\Navigator2-linux\src\ProtocolHost\HostTest\ruby\Mml>ruby testmml_win.rb F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x 86\publish\ Demo for invoke C# code from ruby... F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\ F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\libhostprotocol.dll Traceback (most recent call last): 7: from testmml_win.rb:24:in `<main>' 6: from testmml_win.rb:26:in `<module:ProtocolTest>' 5: from C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:77:in `dlload' 4: from C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:77:in `collect' 3: from C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:87:in `block in dlload' 2: from C:/Ruby26/lib/ruby/2.6.0/fiddle.rb:47:in `dlopen' 1: from C:/Ruby26/lib/ruby/2.6.0/fiddle.rb:47:in `new' C:/Ruby26/lib/ruby/2.6.0/fiddle.rb:47:in `initialize': No such file or directory (Fiddle::DLError) 5: from testmml_win.rb:24:in `<main>' 4: from testmml_win.rb:26:in `<module:ProtocolTest>' 3: from C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:77:in `dlload' 2: from C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:77:in `collect' 1: from C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:86:in `block in dlload' C:/Ruby26/lib/ruby/2.6.0/fiddle/import.rb:89:in `rescue in block in dlload': can't load F:\TOOLCODE\coreclr_win\Navigator2-linux\src\CSharpAdapter\CSharpAdapter\bin\Release\netcoreapp3.0\win-x86\publish\libhostprotocol.dll (Fiddle::DLError) F:\TOOLCODE\coreclr_win\Navigator2-linux\src\ProtocolHost\HostTest\ruby\Mml> ``` **the same testmml_win.rb in the same system, ruby2.2 works, ruby2.6.3 failed!** **below is the test ruby code:** ```ruby require `require 'fiddle' require 'fiddle/import' if ARGV.length < 1 puts "Missing libPath argument..." puts "Usage: ruby HostTest2.rb libPath" puts "Sample: ruby HostTest2.rb /home/ProtocolAdapter/output" exit end puts "Demo for invoke C# code from ruby..." String libPath = ARGV[0] if libPath[libPath.length - 1] != '\\' libPath = libPath + '\\' end puts libPath $libCoreCLR_so_path = libPath + "libhostprotocol.dll" puts $libCoreCLR_so_path module ProtocolTest extend Fiddle::Importer dlload $libCoreCLR_so_path extern 'void Init(const char* libPath)' end ProtocolTest.Init(libPath); ProtocolTest.Init(libPath);` ```