• 締切済み
  • すぐに回答を!

VB DLLプロジェクトについて

いつもお世話になってます。 VB6.0で開発を行っております。VBのDLLを作成しております。 そこで、お聞きしたいのが、DLLプロジェクトのプロパティの中に、コンポーネントという項があるのですが、 その中のバージョンの互換性について教えていただきたいと思っております。 まず、根本的にこれは設定をするとどういうことになるのでしょうか?バージョンの互換性という意味がよくわからないので、教えていただきたいと思います。 それと、「互換なし」、「プロジェクト互換」、「バイナリ互換」はどう使い分けるものなのでしょうか? ヘルプを見てもよくわかなかったので、教えていただきたいと思っております。 何卒よろしくお願い申し上げます。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数978
  • ありがとう数1

みんなの回答

  • 回答No.1

こんにちは。 ASPでActiveX.DLLを作るので多少は分かります。 作成したDLLを配布する時にレジストリに登録するのですが、 DLLに改変があった場合にレジストリの再登録が要るかに関わります。 具体的にはクラスID等がレジストリに登録されますが、 DLLを再コンパイルする時にクラスID等を振り直すかどうかの指定のようです。 バインドする方のプロジェクト(COMクライアント)の参照設定のやり直しにも関わります。 [互換なし] 再コンパイルのたびにクラスID等は全て変更されます。 [プロジェクト互換] クラスIDとライブラリIDは変更せず、インタフェースIDのみが変更されます。 COMクライアントで「ActiveXコントロールのアップグレード」にチェックがあれば、プロジェクトを開く時に最新の参照設定情報が読み込まれます。 [バイナリ互換] 3種類とも変更されません。 従ってCOMクライアントの変更が要らないことになります。 但し、 1.実装済みメソッドの戻り値の型を変更できない。 2.引数の型及び個数を変更できない。 3.メソッドを追加した場合、COMクライアントの再コンパイルが必要。(CreateObjectは別) の制限があります。 これを知るのに役に立ったのは「VisualBasicMagazine」の2000年8月号でした。 バックナンバーを探して見つかれば詳しい記事があります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 なんとなくはわかったような気がしますが、 バックナンバーを探してみます。 ありがとうございました。

関連するQ&A

  • VB6でバイナリ互換でDLL作成するには?

    VB6.0にてActiveX DLLで開発をしたいのですが、 プロジェクトのプロパティ.コンポーネントにてバイナリ互換を選択すると バージョン互換コンポーネントを設定できません。というエラーメッセージが出て、 DLLを作成できません。 プロジェクトはフォーム1画面、標準モジュール複数、クラスモジュールで構成されています。 DLL作成手順のアドバイスをお願いします。 もう1点、 ある程度、開発できたら単体テストを行います。 その際は現場で用意されているテスト起動画面を使用するように言われたのですが、 この方法だと自分の担当画面に修正を加えるたびに下記1~3の作業を行う 必要があると思うのですが、もっとスマートな方法はないのでしょうか? 1.修正したプロジェクトを保存してdllを作成する。 2.作成したdllを所定の場所(現場で指示された場所)に格納 3.テスト起動画面からそのdllを指定して単体テスト

  • MSVBVM50.DLLが見つからなかったため・・

    あるアプリケーションをWindows Vistaで使用したいのですが、アプリケーションを実行しようとすると、「MSVBVM50.DLLが見つからなかったため、このアプリケーションを開始できませんでした。」などと表示されて、実行できません。 さらに深く調べてみると、「このプログラムには、欠けているWindowsのコンポーネントが必要です」であるとか「この問題は、Windows Vista とこのバージョンの Microsoft Deprecated DLL Components の間での互換性に関する問題が原因で発生しました。」と表示されます。 とりあえず、ランタイムファイルであるMSVBVM50.DLLをどこかで入手すればいいのではないかと思い、以下のフリーウェアをダウンロード後にインストールを試みましたが、正常にインストールされませんでした。 http://www.vector.co.jp/soft/win95/util/se081909.html さらによく調べた結果、もともとWindows Vistaには上位のバージョンであるMSVBVM60.DLLが標準装備されているとのことです。下位のバージョンであるMSVBVM50.DLLとの互換性がないのでしょうか・・? なお、このアプリケーションはもともとWindows XPで動作するように開発されたものらしく、機種や環境による依存性の確認は行われていないとのことです。Windows XPで正常に動作するかはまだ試していないのでうが、とある事情でVistaでもこのアプリケーションを使用しなければならない状況です。 今の状態ですと、Vistaでの使用は無理でしょうか?

  • VBランタイムについて。

    以前から気になってたんですが、vectorなどからフリーソフトをDLする際、「要・VB6.0ランタイム」とか書いてる場合がありますよね。 一緒にDLするのはかまわないんですが、VB5ランタイムが必要なソフト、またはVB6、更にVB6SP3などなど、ソフトによって必要なランタイムのバージョン(?)が違う場合には、それぞれに対応するランタイムを全て入れないといけないんでしょうか? 一番最新のバージョン(VB6.0SP4?)を入れれば全て互換性があるというわけでは無いんでしょうか?←このように上位互換になってるなら「VB5以降」と『以降』と付ける気もするのでやはり無理なんだろうかって思いもしますが。。。

  • VS2008でVBとC++を一つのプロジェクトにすることができますか?

    VB6.0からの移行組です。現在VB6.0をメインにしてVC++6.0で作ったdllをVBで呼んでいます。VBでデバッグ中にC++で作ったdll内にバグがあった場合にどこにバグがあるかわからず不便です。 VS2008ではVBとVC++を一つのプロジェクトにまとめる事ができますか? そうすればデバッグ中にVBとVC++のコードを一連の流れで動かしてやれば、どこがおかしいのか分かりやすくて便利なんですが。 (C++がコンパイル型だから無理かな・・・) 素人な質問ですみませんがよろしくお願いします。

  • DLLの登録をVBで行いたい(VB2005)

    いつもお世話になっております。 VB2005で開発しています。 DLLを登録するときに、コマンドプロンプトから regsrv32 ファイル名.dll と実行すると思います。 これをVBから行いたいのですが、何か良い方法はございませんか? 具体的には、VBでレジストリ登録するファイルの一覧を出力して、 それをレジストリ登録したいのです。 VBとバッチを組み合わせれば、実現可能なのですが、 ファイルを2つに分けたくないので、VBだけで処理できないものかと 思いました。 コマンドプロンプトで実行するコマンドをVBから同じように実行できれば良いのですが・・・ もしよろしければ、ご教示ください。 よろしくお願い致します。

  • VisualBasic6でPerlの正規表現と互換性のあるコンポーネント

    VisualBasic6でPerlの正規表現と互換性のあるコンポーネントを探していますが、そういうものはあるのでしょうか? また、VB6から .NET VB? C#ソースをへコンバートする ツールはありますか? 心配なのは、サードパーティのコンポーネントをどう C$ .NET VBにコンバートするか不安なもので・・・

  • VBで作成したdllをAccessで使用

    こんにちは。教えてください。 開発環境はXP/Access VBA(97 SP-1)です。 パスワード暗号化用のFunctionを作ったのですが、 このままではモジュールを開き、ソースを読まれたら 暗号化ロジックが判明してしまいます。 そこで、このFunctionをdll化してしまいたいと思うのですが、 dllをVBで作成する場合、VBのバージョンに制限は あるのでしょうか? Accessのバージョンが古いため、少し心配です。 VBは最新バージョンでも問題ないですかね? 宜しくお願いします。

  • VBのフォーム上にPDF文書を表示したい

    VB6.0のフォーム上にAcroPDF.dll(Adobe7.0)のコントロールを貼り付けて、LoadFileでPDF文書を表示することはできたのですが、一旦VBプロジェクトを保存して再度開くと、さっき貼り付けたはずのPDFコントロールがなくなっているのです。プロジェクトの参照は外れていないのですが... 何かやり方が間違っているのでしょうか? VBのフォームでPDF-Viewerを作ったことのある方、何かヒントでも構いませんので教えていただけないでしょうか? Adobeのバージョンにはこだわりません。できればいいです。 よろしくお願いいたします。

  • VB .Net のコーディング規約

    私の勤める小さな会社でもついにVB6から.NET へ変わるときがきました。そこで最近勉強していますが、VB6と比べていろいろな書き方が可能なことと、以前のバージョンとの互換性を保つための機能などがあり、人によってバラバラに組んでしまいそうです。そこでコーディング規約を作ろうとなったのですが、とにかくわかる人が誰もいないもので、どう作ればよいかもわかりません。よろしくお願いします。

  • ActiveXDLL(VB)にウィンドウハンドルを受け取るメソッドを用意したい

    VB6で作成したActiveXDLLに、ウィンドウハンドルを渡すためのメソッドを実装したいと思います。 ActiveXDLLを使用するクライアントはCで作成しており、クライアント側で表示するウィンドウのボタンを押下した際にActiveXDLLのCOMコンポーネントをインスタンス化して、クライアントのウィンドハンドルをCOMコンポーネントに渡したい次第です。 VBでウィンドウハンドルを受け取るFunctionを作成したことがなく、また調べてみたものの解決策を見出すことができませんでしたので、よい方法や参考HPがあれば教えていただきたいと思っております。 よろしくお願いいたします。