藤本です、こんにちは。

From: "MAEDA Shugo" <shugo / aianet.ne.jp>
Subject: [ruby-dev:2787] Re: experimental release 1.1b9_21
Date: Fri, 29 May 1998 20:58:36 +0900

> 前田です。
> 
> >せっかく DECLSPEC を define してるのに, なぜこれを使
> >わないで拡張モジュール側で ifdef してるんでしょうか?
> 
> すみません、ぼけてました。
> 
> >#DECLSPEC という名前はともかく.
> 
> 拡張モジュールを書く側からすると、
> 
> #if defined(__BEOS__) && !defined(__POWERPC__)
> #define IMPORT __declspec(dllimport)
> #else
> #define IMPORT extern
> #endif
> 
> として、
> 
> IMPORT VALUE cIO;
> 
> ぐらいがよいかなと思うのですが、exportする時も
> 同じ名前を使うことを考えるとIMPORTというのは変ですよね。
> 何か良い名前はないでしょうか。

<http://www.be.com/documentation/rel_notes/R3DevLayout.html>を見ると

      #if _BUILDING_be
      #define _IMPEXP_BE     __declspec(dllexport)
      #else 
      #define _IMPEXP_BE __declspec(dllimport)
      #endif

と書いているのでこれを参考にしてはどうでしょうか?

  上のURLの文を読むと「Beとしては__declspecを使って欲しい」というニュ
アンスが感じられます。Intel版は__declspecを使うしかないみたいなのでし
かたないのかもしれませんが、そうすると何かのライブラリをポーティングし
て共有ライブラリにするたびに、元のソースに変更をくわえなくちゃならなく
なりますよね。困ったもんです (^^;

  BeTalk-Jで教えてもらったように、直接ruby.hやintern.hを変更せずruby.h
の最初にberuby_impexp.hをインクルードするとかしてberuby_impexp.hの中に
集中的に__declspec関連を書くというのはできないでしょうか?

=============================================================
 藤本尚邦  FUJIMOTO Hisakuni                hisa / imasy.or.jp
=============================================================