[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Building BDB for windows

derek.hans@gmail.com

4/27/2006 2:58:00 AM

I'm trying to get support for Berkely DB under windows, but I have not
been able to produce a functional build of the BDB library.

Compiling with Visual Studio produces a dll, however ruby complains
that it can't find the "Init_bdb" method when trying to use the dll.
The Init_bdb function deffinitly exists in the source code.

Compiling under linux produces working linux binaries; however, when I
tried cross-compiling using mingw (as described in
http://eigenclass.org/hiki.rb?cross+compil...), I wasn't able to
successfully link against the berkeley db dll.

Furthermore, I tried using the berkeley db dll directly using Ruby/DL,
again with no success. Code in this style:

require 'dl/import'
module BDB
extend DL::Importable
dlload "libdb44.dll"
extern "int db_create(DB **dbp, DB_ENV *dbenv, u_int32_t flags)"
end

fails because db_create cannot be found, while something like this:

require 'dl'
bdb = DL.dlopen('libdb44.dll')
db_create = bdb['db_create', 'IPPI']
db = nil
db_create.call(db, nil, 0)

fails because the dll somehow makes ruby "exit unexpectedly" during
db_create.call.

I've run out of ideas how to make it work. Has anyone been successful?

1 Answer

derek.hans@gmail.com

4/27/2006 3:00:00 PM

0

Following the SWIG instructions, I added NT=1 and "IMPORT" to the
Preprocessor definitions and set the entry point to Init_bdb. I also
set the multi-threaded DLL option /MD because /ML does not play nice
with specifying the entry point.

I now get the following error:

../bdb.dll: 127: The specified procedure could not be found. -
Init_bdb (LoadEr
ror)
../bdb.dll from
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:2
1:in `require'
from ./clean.rb:1
from
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:21:in `re
quire'
from basic.rb:2
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:29: [BUG]
Segmentation
fault
ruby 1.8.4 (2005-12-24) [i386-mswin32]


This application has requested the Runtime to terminate it in an
unusual way.
Please contact the application's support team for more information.


The last two lines of the message correspond to the error I am getting
when trying to access the berkeley dll using Ruby/DL.