esilva has asked for the wisdom of the Perl Monks concerning the following question:

I have been working on updating a DBD driver for OpenBaseSQL, getting it to build under Mac OS X, but have run into something strange.


It builds fine, but I get this error at runtime:

install_driver(OpenBaseDBD) failed: DBD::OpenBaseDBD object version 0.03 does not match $DBD::OpenBaseDBD::VERSION 0.03 at /System/Library/Perl/darwin/DynaLoader.pm line 219. Compilation failed in require at (eval 7) line 3.


How is it that it thinks that version 0.03 != version 0.03?!

Replies are listed 'Best First'.
Re: when does version != version?
by DrSax (Sexton) on May 24, 2001 at 23:04 UTC
    I hesitate to venture this opinion, but it may be that the OpenBaseDBD version that is being referenced is the one in the shared object that the Dynaloader module is attempting to access. It is possible that the error message isn't showing you the version number inside the .so of .DLL or whatever (depends on OS), but rather that of the package code that is opening it.
    If you are on a UNIX system, you may be able to poke around inside the guts of the shared object with the 'nm' command. This is assuming that the version is a symbol in the library itself.
    Which is, of course, assuming a lot.
    I doubt this helps, but it is at least a thought.
    Submitted tentatively,
    DrSax
      Hmmm... This is as close as I've come to a clue yet: I used strings to look at the bundle (OS X version of a .so) and found this: %s::%s XS_VERSION VERSION 0.03 %s object version %s does not match %s%s%s%s %_ But doing the same thing on the DBI bundle shows this: %s::%s XS_VERSION VERSION %s object version %s does not match %s%s%s%s %_ So where is the version number in the DBI? The mystery deepens... More digging for me. :-/ Thanks for the clue.