larsch / ocra

One-Click Ruby Application Builder
http://ocra.rubyforge.org/
833 stars 84 forks source link

ocra failing with sqlite3 #154

Closed fabiopavan closed 4 years ago

fabiopavan commented 4 years ago

I'm developing a Ruby software that uses the gem sqlite3, and it works no problem, but when I run the resulting .exe, I get the following error message:

Traceback (most recent call last):
        2: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/src/kernel.rb:16:in `<main>'
        1: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sqlite3 (LoadError)
        6: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/src/kernel.rb:16:in `<main>'
        5: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
        4: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
        3: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
        2: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3.rb:4:in `<top (required)>'
        1: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': cannot load such file -- sqlite3/2.6/sqlite3_native (LoadError)
        7: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/src/kernel.rb:16:in `<main>'
        6: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:34:in `require'
        5: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `rescue in require'
        4: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:130:in `require'
        3: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3.rb:2:in `<top (required)>'
        2: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3.rb:6:in `rescue in <top (required)>'
        1: from C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require': 126: NÒo foi possÝvel encontrar o m¾dulo especificado.   - C:/Users/Romeu/AppData/Local/Temp/ocrE168.tmp/lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/sqlite3_native.so (LoadError)

I'm using the following command for compiling:

ocra --verbose --gem-guess kernel.rb

During the compiling, it shows, among other things, this:

=== Detected gem sqlite3-1.4.2 (loaded, files)
===     23 files, 168429 byte`

`m lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2
m lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib
m lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/sqlite3_native.so
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/constants.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/errors.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/pragmas.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/resultset.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/statement.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/translator.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/value.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/database.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/version.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3.rb`

`a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/.gemtest
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/.travis.yml
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/API_CHANGES.rdoc
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/appveyor.yml
m lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/faq
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/faq/faq.yml
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/Gemfile
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/constants.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/database.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/errors.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/pragmas.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/resultset.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/sqlite3_native.so
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/statement.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/translator.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/value.rb
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/lib/sqlite3/version.rb
m lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/rakelib
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/rakelib/faq.rake
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/rakelib/gem.rake
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/rakelib/native.rake
a lib/ruby/gems/2.6.0/gems/sqlite3-1.4.2/rakelib/vendor_sqlite3.rake
fabiopavan commented 4 years ago

I fixed it by manually requiring libsqlite3-0.dll. At the first time, it is needed. After that, you don't need to require that DLL anymore. Then SQLite3 plainly works.