« ◆丸ノコでスキー板を切断する | トップページ | ◇れりご~。ここにネイティブはTを聴くか »

DLLはC++非対応:メモ

 なんと!DLLはC++非対応

UNIX/LinuxでC++での開発を行ってきた人間にとって 腰を抜かすほど驚くべきことですが、何と!

DLLはC++非対応

なのです。

MicroSoftの不誠実極まりない説明ではC++を使った次のような 例を載せています。

// 以下マイクロソフトのチュートリアルページからコメントを外し引用
#ifdef MATHFUNCSDLL_EXPORTS
#define MATHFUNCSDLL_API __declspec(dllexport) 
#else
#define MATHFUNCSDLL_API __declspec(dllimport) 
#endif
namespace MathFuncs
{
   class MyMathFuncs
   {
   public: 
      static MATHFUNCSDLL_API double Add(double a, double b); 
      static MATHFUNCSDLL_API double Subtract(double a, double b); 
      static MATHFUNCSDLL_API double Multiply(double a, double b); 
      static MATHFUNCSDLL_API double Divide(double a, double b); 
   };
}
// 以上マイクロソフトのチュートリアルページから引用

一見C++のクラスが使えるように思えますが、リンクできるのはstatic関数 のみであり、普通のメンバを持つ普通のクラスは使えないのです。
MicroSoftはこんなごまかし例を載せるまえに、 説明冒頭で「ダイナミック・リン・クライブラリに入れられる のはスタティックメンバのみ」と言うべきです。

「DLLはUNIX/Linuxの共有ライブラリに相当する」というのは ウソに近いものなのです。

せっかくC++を使っても非オブジェクト指向設計になる理由、そうせざるを得ない理由の一つが これなんでしょうねえ。

|

« ◆丸ノコでスキー板を切断する | トップページ | ◇れりご~。ここにネイティブはTを聴くか »

トラックバック


この記事へのトラックバック一覧です: DLLはC++非対応:メモ:

« ◆丸ノコでスキー板を切断する | トップページ | ◇れりご~。ここにネイティブはTを聴くか »