こんにちは、R274です。
もともとはVC++上がりで、まだまだVBについては未熟ですが
アドバイスお願いします。
環境は、Windows2000+VB6.0SP4使用です。
VCとVBでは、そもそもプロジェクト管理の仕方が違うと思っているのですが
(そんなことない!と思われる方は、アドバイスお願いします)
VCではスタティックライブラリを作成することができ、パス指定、明示的な
ライブラリ設定をすることで、動作することができます。
同じようなことをVBで実現したいのですが、パッと見てライブラリを作成する
プロジェクトが見当たらないので実現不可なのでしょうか。
今、複数のプロジェクトにより構成されているVBアプリがあるのですが
アプリ共通な関数群を別管理(DLL以外で)したいのが目的です。
なんとかVBの膨大なコード量(COBOLじゃないんだから ^^;)をすっきりさせたい
という強い希望のもと、アドバイス宜しくお願い致します。
VCで言うところのライブラリ(.lib)に該当するものはVBでは
作成できません。
ですが代わりに、ActiveX DLL を作成できますので、代用すること
はプログラム的には可能です。
ご検討下さい。
以上。
岡田さん、アドバイスありがとうございます。
>ですが代わりに、ActiveX DLL を作成できますので、代用すること
>はプログラム的には可能です。
そうですか・・・ActiveX DLLですか・・・。
新しいプロジェクトを作成するところにあるようですが、
現状、このActiveX DLLを実際使用してるシステム開発をすることは
ごく普通なのでしょうか。
数ヶ月前ですが、当時の周囲の方々にそれとなく聞いてみたのですが
あまり良い風評ではなかったです。
(何が良くない・・・までは聞けませんでしたが)
実際、VBはLIB(外部ファイル)だけをロードすることはできるのでしょうか。
例えば、VC側で作成したスタティックライブラリだけとか・・・。
(やっぱり、VC側でDLLを作成する必要があるのか・・・)
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から呼び出すのが、今回
のケースでは、慣れた環境を使えるので、得策かと・・・
以上。
> このActiveX DLLを実際使用してるシステム開発をする
VBの場合、ランタイムと二人三脚のプログラムですし、最適化できない分遅く(全ての関数がいっぺんに関数上に置かれる)、DLLを作るメリットというのが、あまりありません。
なので、誰も作らないということじゃないでしょうか?
複数のプロジェクトで関数を共有するというのなら、共有用モジュールに使う関数を移動して使えばいい話ですし、
ソースコードがかさばるというのならば、さらにいくつか分類わけして、いくつかのモジュールにまとめればいい話ですから。
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の良いところと
悪いところを熟知されていない為、このようなことになっているの
だと思います。
結果としては・・・
どのようなプログラムを作成したいのか!?
と言うことが明治されていない為、言語仕様や言語の良し悪しと言う
漠然とした面でしか、話せない・・・と言うことだと思います。
如何でしょうか?
以上。
ツイート | ![]() |