Issue #5869 has been reported by Hiroshi Shirosaki.

----------------------------------------
Bug #5869: ext/dbm build error with mswin32
https://bugs.ruby-lang.org/issues/5869

Author: Hiroshi Shirosaki
Status: Open
Priority: Normal
Assignee: 
Category: ext
Target version: 
ruby -v: ruby 2.0.0dev (2012-01-07 trunk 34222) [i386-mswin32_100]


I had a build error of ext/dbm with mswin32.
 
-----------------------------------------------------------------------
C:\Users\hiroshi\work\mswin32\ext\dbm>nmake

Microsoft (R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation.  All rights reserved.

         cl -nologo -LD -Fe../../.ext/i386-mswin32_100/dbm.so dbm.obj msvcr100-r
uby200.lib gdbm.lib  unicows.lib oldnames.lib user32.lib advapi32.lib shell32.li
b ws2_32.lib imagehlp.lib  -link -incremental:no -debug -opt:ref -opt:icf -incre
mental:no -debug -opt:ref -opt:icf -dll -libpath:. -libpath:../.. -libpath:/mswi
n32lib/lib  -implib:dbm-i386-mswin32_100.lib -pdb:dbm-i386-mswin32_100.pdb -def:
dbm-i386-mswin32_100.def
   Creating library dbm-i386-mswin32_100.lib and object dbm-i386-mswin32_100.exp

dbm.obj : error LNK2001: unresolved external symbol _gdbm_version
../../.ext/i386-mswin32_100/dbm.so : fatal error LNK1120: 1 unresolved externals

NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\BIN\cl.EXE"' : return code '0x2'
Stop.
-----------------------------------------------------------------------


`extern __declspec(dllimport)` would be required for VC.
Here is a patch.


diff --git a/ext/dbm/dbm.c b/ext/dbm/dbm.c
index 83db7cb..4b177e6 100644
--- a/ext/dbm/dbm.c
+++ b/ext/dbm/dbm.c
@@ -1086,7 +1086,7 @@ Init_dbm(void)
     /* ndbm.h doesn't declare gdbm_version until gdbm 1.8.3.
      * See extconf.rb for more information. */
     {
-        extern char *gdbm_version;
+        RUBY_EXTERN char *gdbm_version;
         rb_define_const(rb_cDBM, "VERSION",  rb_str_new2(gdbm_version));
     }
 #elif defined(HAVE_DPVERSION)



-- 
http://bugs.ruby-lang.org/