VBでライブラリ化は実現できますか?


R274  2004-01-16 01:44:16  No: 111334

こんにちは、R274です。

もともとはVC++上がりで、まだまだVBについては未熟ですが
アドバイスお願いします。

環境は、Windows2000+VB6.0SP4使用です。

VCとVBでは、そもそもプロジェクト管理の仕方が違うと思っているのですが
(そんなことない!と思われる方は、アドバイスお願いします)
VCではスタティックライブラリを作成することができ、パス指定、明示的な
ライブラリ設定をすることで、動作することができます。
同じようなことをVBで実現したいのですが、パッと見てライブラリを作成する
プロジェクトが見当たらないので実現不可なのでしょうか。

今、複数のプロジェクトにより構成されているVBアプリがあるのですが
アプリ共通な関数群を別管理(DLL以外で)したいのが目的です。

なんとかVBの膨大なコード量(COBOLじゃないんだから ^^;)をすっきりさせたい
という強い希望のもと、アドバイス宜しくお願い致します。


岡田 之仁  2004-01-16 02:39:33  No: 111335

VCで言うところのライブラリ(.lib)に該当するものはVBでは
作成できません。

ですが代わりに、ActiveX DLL を作成できますので、代用すること
はプログラム的には可能です。

ご検討下さい。

以上。


R274  2004-01-16 02:57:36  No: 111336

岡田さん、アドバイスありがとうございます。

>ですが代わりに、ActiveX DLL を作成できますので、代用すること
>はプログラム的には可能です。

そうですか・・・ActiveX DLLですか・・・。
新しいプロジェクトを作成するところにあるようですが、
現状、このActiveX DLLを実際使用してるシステム開発をすることは
ごく普通なのでしょうか。
数ヶ月前ですが、当時の周囲の方々にそれとなく聞いてみたのですが
あまり良い風評ではなかったです。
(何が良くない・・・までは聞けませんでしたが)

実際、VBはLIB(外部ファイル)だけをロードすることはできるのでしょうか。
例えば、VC側で作成したスタティックライブラリだけとか・・・。
(やっぱり、VC側でDLLを作成する必要があるのか・・・)


岡田 之仁  2004-01-16 04:04:35  No: 111337

VBでは、VCで作成したLIBは読み込めません。
昔のミックスドランゲッジのようには、いかないのが実情です。

VCで作成したければ、WIN32 DLL 形式にすれば、VBでは
Declare宣言で呼べます。

動的にとなりますと、CreateObjectが可能な、ActiveX DLL
と言うことになります。

※  LIB的に可能かどうかを再度調べてみましたが・・・
    ミックスドランゲッジに対応可能だったのは、VisualBASIC for DOS 1.0
    や、MS-BASIC 7.1 とか・・・はるか昔のものでした。

    よって、現行のVB6では、当然、無理です。

VCで、WIN32 DLL を作成し、VBから呼び出すのが、今回
のケースでは、慣れた環境を使えるので、得策かと・・・

以上。


たかみちえ  URL  2004-01-16 05:21:10  No: 111338

> このActiveX DLLを実際使用してるシステム開発をする
  VBの場合、ランタイムと二人三脚のプログラムですし、最適化できない分遅く(全ての関数がいっぺんに関数上に置かれる)、DLLを作るメリットというのが、あまりありません。
なので、誰も作らないということじゃないでしょうか?

  複数のプロジェクトで関数を共有するというのなら、共有用モジュールに使う関数を移動して使えばいい話ですし、
ソースコードがかさばるというのならば、さらにいくつか分類わけして、いくつかのモジュールにまとめればいい話ですから。


岡田 之仁  2004-01-16 06:51:28  No: 111339

ActiveX DLL については、VBでもVCでも、作成することは
常識的です。

あるメーカーのCADソフトは、中身は全てActiveX DLL の塊
として作られており、汎用性・拡張性を持たせています。
VBで作成すれば遅いのは当然ですが、VC(MFCを利用)で
作成した場合、当然高速です。

誰も作らない・・・と言う表現では、多分、その方の周辺では
そのようなものを見ないというだけで、違う場所にはゴマンと
居られます。

共有モジュールにする場合は、逆に複数の開発者との共有を前提
としますので、VisualSourceSafeとかを利用しないことには、
ソース管理で破綻します。

どのみちVBで書けば、『遅いソフト』になりますので、膨大な
コード量を全てVBで・・・と言うのは、ある意味ナンセンスで
す。

私も20年前から(DOSの時代から)ミックスドランゲッジを行って
おり、高速性や高精度を要求する部分は、C言語やアセンブラを
使ってオブジェクト化やライブラリ化を行い、低速でも効率が稼げ
る部分はMS-BASICやVB-DOSを使う・・・
それでもメモリ使用量が増大すれば、EMSやHiMem.sysを使って、
プロテクトメモリ領域にコードを押し出す・・・
80286以降(正確には、80386)仮想86モ−ドを利用する・・・
などして効率よく性能を確保することに注力しました。

今回のケースの場合、VC使いの方が、VBを使われると言う部分
で、言語の特異性と性能の確保と言う部分で、VBの良いところと
悪いところを熟知されていない為、このようなことになっているの
だと思います。

結果としては・・・

どのようなプログラムを作成したいのか!?

と言うことが明治されていない為、言語仕様や言語の良し悪しと言う
漠然とした面でしか、話せない・・・と言うことだと思います。

如何でしょうか?

以上。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加