From: Hiroshi Shirosaki Date: 2012-01-09T12:28:53+09:00 Subject: [ruby-core:41996] [ruby-trunk - Bug #5869][Open] ext/dbm build error with mswin32 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/