Project

General

Profile

Actions

Bug #5869

closed

ext/dbm build error with mswin32

Added by h.shirosaki (Hiroshi Shirosaki) over 12 years ago. Updated over 12 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.0.0dev (2012-01-07 trunk 34222) [i386-mswin32_100]
Backport:
[ruby-core:41996]

Description

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)

Updated by kosaki (Motohiro KOSAKI) over 12 years ago

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)

Please commit it.

Actions #2

Updated by Anonymous over 12 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r34265.
Hiroshi, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


  • ext/dbm/dbm.c (Init_dbm): fix a build error on mswin32.
    use extern __declspec(dllimport) for dll link with VC.
    [ruby-core:41996] [Bug #5869]
Actions

Also available in: Atom PDF

Like0
Like0Like0