小田@QNES です。

---
On Fri, 21 Aug 1998 10:23:56 +0900
KIMURA Koichi <kkimura / pure.cpdc.canon.co.jp> wrote:
> 木村です。
> 
> 	In: [ruby-list:9233] 
> 
> >VC++ では、DLL版は作れないのでしょうか?
> 
> 作れますよ。カラクリはcygwin32と共通ですから。実際自分は作った
> ことがあります。
> #ただし共用はできません

cygwin32で作ったDLL は、VC++ で作った ruby.exe では使えない
という意味ですか?

> >DLL版を作ろうと考えた理由は、後で機能拡張する場合に
> >拡張部分のDLLを配布するだけでいいのではないかと考えたから
> >なのですが、間違った考えでしょうか(^^;
> >
> >makeするときのコツのようなものがありましたら教えてください。
> 
> えーと、なんだったけな^^; 若干の手作業が必要だったと思うんですが、
> 色々あって今はコンパイルできる環境を持ってませんので確かめるのも
> すぐには無理です。ごめんなさい。

いえいえ。ありがとうございます。
思い出されたときに教えていただければ嬉しいです(^^)
 
> ところで
> 
> > libruby.lib というファイルがあったので、試しにリンクしてみたのですが
> > ダメでした。
> 
> このときはどんなエラーになったのでしょうか?

libruby.lib をリンクしたときと、ruby.lib をリンクしないように
したときの履歴を下に付けておきます。

----- libruby.lib をリンクしたとき ---

        cl -DLL -osocket.dll socket.obj ../../libruby.lib -link /DEF:socket.def
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 11.00.7022 for 80x86
Copyright (C) Microsoft Corp 1984-1997. All rights reserved.

Microsoft (R) 32-Bit Incremental Linker Version 5.10.7303
Copyright (C) Microsoft Corp 1992-1997. All rights reserved.

/out:socket.exe
/out:socket.dll
/DEF:socket.def
socket.obj
../../libruby.lib
socket.def : warning LNK4017: CODE 文はターゲット プラットフォームでサポートされていません; 無視しました
socket.def : warning LNK4017: DATA 文はターゲット プラットフォームでサポートされていません; 無視しました
   ライブラリ socket.lib とオブジェクト socket.exp を作成中
LIBC.lib(dllcrt0.obj) : error LNK2005: __amsg_exit はすでに LIBC.lib(crt0.obj)
で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: ___app_type はすでに LIBC.lib(crt0.obj)
で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: ___error_mode はすでに LIBC.lib(crt0.obj)
 で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: __aexit_rtn はすでに LIBC.lib(crt0.obj)
で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: __wenvptr はすでに LIBC.lib(crt0.obj) で
定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: __aenvptr はすでに LIBC.lib(crt0.obj) で
定義されています
socket.obj : error LNK2001: 外部シンボル "_htons@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_inet_addr@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_closesocket@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ntohs@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ntohl@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_htonl@4" は未解決です
libruby.lib(io.obj) : error LNK2001: 外部シンボル "___WSAFDIsSet@8" は未解決です
libruby.lib(eval.obj) : error LNK2001: 外部シンボル "___WSAFDIsSet@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "__imp__GetUserNameA@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_WSAGetLastError@0" は未解決です

libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_select@20" は未解決です
libruby.lib(eval.obj) : error LNK2001: 外部シンボル "_select@20" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_WSACleanup@0" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_WSAStartup@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_accept@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_bind@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_connect@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getpeername@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getsockname@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getsockopt@20" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_ioctlsocket@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_listen@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_recv@16" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_recvfrom@24" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_send@16" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_sendto@24" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_setsockopt@20" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_shutdown@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_socket@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_gethostbyaddr@12" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_gethostbyname@4" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_gethostname@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getprotobyname@4" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getprotobynumber@4" は未解決で
す
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getservbyname@8" は未解決です
libruby.lib(nt.obj) : error LNK2001: 外部シンボル "_getservbyport@8" は未解決です
libruby.lib(eval.obj) : error LNK2001: 外部シンボル "_Init_ext" は未解決です
libruby.lib(ruby.obj) : error LNK2001: 外部シンボル "_Init_ext" は未解決です
LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
socket.dll : fatal error LNK1120: 外部参照 36 が未解決です。
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.

------- ruby.lib をリンクしないようにしたとき ---

        cl -DLL -osocket.dll socket.obj  -link /DEF:socket.def
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 11.00.7022 for 80x86
Copyright (C) Microsoft Corp 1984-1997. All rights reserved.

Microsoft (R) 32-Bit Incremental Linker Version 5.10.7303
Copyright (C) Microsoft Corp 1992-1997. All rights reserved.

/out:socket.exe
/out:socket.dll
/DEF:socket.def
socket.obj
socket.def : warning LNK4017: CODE 文はターゲット プラットフォームでサポートされていません; 無視しました
socket.def : warning LNK4017: DATA 文はターゲット プラットフォームでサポートされていません; 無視しました
   ライブラリ socket.lib とオブジェクト socket.exp を作成中
LIBC.lib(dllcrt0.obj) : error LNK2005: __amsg_exit はすでに LIBC.lib(crt0.obj)
で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: ___app_type はすでに LIBC.lib(crt0.obj)
で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: ___error_mode はすでに LIBC.lib(crt0.obj)
 で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: __aexit_rtn はすでに LIBC.lib(crt0.obj)
で定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: __wenvptr はすでに LIBC.lib(crt0.obj) で
定義されています
LIBC.lib(dllcrt0.obj) : error LNK2005: __aenvptr はすでに LIBC.lib(crt0.obj) で
定義されています
socket.obj : error LNK2001: 外部シンボル "_rb_define_module_under" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_define_singleton_method" は未解決です

socket.obj : error LNK2001: 外部シンボル "_rb_define_method" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_undef_method" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_class_of" は未解決です
socket.obj : error LNK2001: 外部シンボル "_cIO" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_define_class" は未解決です
socket.obj : error LNK2001: 外部シンボル "_eStandardError" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_sys_fail" は未解決です
socket.obj : error LNK2001: 外部シンボル "_myshutdown" は未解決です
socket.obj : error LNK2001: 外部シンボル "_io_check_closed" は未解決です
socket.obj : error LNK2001: 外部シンボル "_num2long" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_scan_args" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_secure" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mysetsockopt" は未解決です
socket.obj : error LNK2001: 外部シンボル "_str2cstr" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_type" は未解決です
socket.obj : error LNK2001: 外部シンボル "_str_new" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygetsockopt" は未解決です
socket.obj : error LNK2001: 外部シンボル "_alloca" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygetsockname" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygetpeername" は未解決です
socket.obj : error LNK2001: 外部シンボル "_thread_schedule" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mysend" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mysendto" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_test_false_or_nil" は未解決です
socket.obj : error LNK2001: 外部シンボル "_thread_fd_writable" は未解決です
socket.obj : error LNK2001: 外部シンボル "_assoc_new" は未解決です
socket.obj : error LNK2001: 外部シンボル "_TypeError" は未解決です
socket.obj : error LNK2001: 外部シンボル "_str_taint" は未解決です
socket.obj : error LNK2001: 外部シンボル "_myrecvfrom" は未解決です
socket.obj : error LNK2001: 外部シンボル "_trap_immediate" は未解決です
socket.obj : error LNK2001: 外部シンボル "_thread_wait_fd" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_check_safe_str" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mylisten" は未解決です
socket.obj : error LNK2001: 外部シンボル "_myconnect" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mybind" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mysocket" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygetprotobyname" は未解決です
socket.obj : error LNK2001: 外部シンボル "_htons@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygetservbyname" は未解決です
socket.obj : error LNK2001: 外部シンボル "_Raise" は未解決です
socket.obj : error LNK2001: 外部シンボル "_inet_addr@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygethostbyname" は未解決です
socket.obj : error LNK2001: 外部シンボル "_obj_call_init" は未解決です
socket.obj : error LNK2001: 外部シンボル "_io_unbuffered" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_fdopen" は未解決です
socket.obj : error LNK2001: 外部シンボル "_xmalloc" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_newobj" は未解決です
socket.obj : error LNK2001: 外部シンボル "_closesocket@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_myaccept" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ary_new3" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ntohs@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_mygethostbyaddr" は未解決です
socket.obj : error LNK2001: 外部シンボル "_str_new2" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ntohl@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_htonl@4" は未解決です
socket.obj : error LNK2001: 外部シンボル "_obj_is_kind_of" は未解決です
socket.obj : error LNK2001: 外部シンボル "_cInteger" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_notimplement" は未解決です
socket.obj : error LNK2001: 外部シンボル "_str_modify" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_check_type" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ary_push" は未解決です
socket.obj : error LNK2001: 外部シンボル "_ary_new" は未解決です
socket.obj : error LNK2001: 外部シンボル "_rb_define_const" は未解決です
LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です
socket.dll : fatal error LNK1120: 外部参照 66 が未解決です。
NMAKE : fatal error U1077: 'cl' : リターン コード '0x2'
Stop.

∪*****/\*****\/*****/\*****∪
  Koji Oda  NEC Software Kyusyu
  1st Development Department
   Based Software Division
  E-Mail:oda / bsd1.qnes.nec.co.jp
∩*****/\*****\/*****/\*****∩