• 締切済み

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

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

みんなの回答

  • sam_inoue
  • ベストアンサー率47% (27/57)
回答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月号でした。 バックナンバーを探して見つかれば詳しい記事があります。

hiko758
質問者

お礼

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

関連するQ&A

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

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

  • VB.NETでクラスライブラリプロジェクトがでてこない

    VB.NETスタンダードですが、DLLを作りたいのですが、新しいプロジェクトで「クラスライブラリプロジェクト」がでてきません。どうしてでしょうか? また、VB.NETで普通にDLLを作成するには、やはり「クラスライブラリプロジェクト」を開くしかないのでしょうか?

  • C#でのDLL

    OS  :WindowsXP Pro SP1 開発環境:VisualStudio .NET 2003 開発言語:C# 開発形態:Windowsアプリケーション 開発初心者です。よろしくお願い致します。 テキストファイルを読み込んで、その中にある文字列を3つほど返却値として返すDLLを作成したいと思っています。 新規にクラスライブラリのテンプレートでプロジェクトを作成し、プロジェクトメニューからコンポーネントの追加をしました。 質問事項 1.まず、DLLを作成する手順として、上記の方法でよろしいのでしょうか? 2.ファイルからテキストを取得するところまではできるのですが、それを返却値として、呼び出し元の別プロジェクトへは、どうすればよいのでしょうか? どなたか、ご教授お願い致します。

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

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

  • VB.NET 異なるプロジェクト間のデバッグ

    こんにちわ。 いまVB.NET2003で開発している者です。 あるVBProjファイルが参照設定であるdllファイルを参照しています。 VBProjファイル内のあるコードにブレークを張って, dllファイル側内にもブレークを張って, プロジェクトをまたがって,動的にデバッグしたいのですが, どうすれば良いでしょうか? 教えてください。よろしくお願いします。

  • VBAで呼び出したVBのDLLのデバッグ方法

    VB2010で、COM相互運用機能を使って作成したDLLを VBAから呼び出すことはできるのですが この状態でこのDLLをデバッグすることはできないでしょうか。 本来ならば、DLLをデバッグするテストプログラムを VB2010のVB.NETのWindowsフォームアプリケーションか ConsoleApplication1で作成して、 同じソリューションの中に DLLとテストプログラムのプロジェクトを配置して 参照の追加でDLLを参照設定して 両者をデバッグをすると思われますが、 テストプログラムを作るのがかなり大変なのと、 今回作成したDLLは、元々はVBAの中のひとつのプロシージャ―で、 事情があって、このプロシージャ―だけをVBのDLLにしたものです。 このプロシージャ―は元々はVBAの中で正しく動作していたものです。 VBに書き直した時に何らかの不具合が起きていると思われます。 テストプログラムを作らずに、既存のVBAから呼び出して、 DLLの部分の動作だけを(できればVB2010で)デバッグできないでしょうか。 よろしくお願いします。 (WindowsXP SP3 , Excel2003のVBA , Visual Studio 2010)

  • VB 2008 DLL作成の方法

    当方Visual Studio 2008のVB、C++で開発をしています。 VS2008のVBでクラスライブラリとして作成し、ビルドをしてDLLを作成したのですが、 対となるLIBファイルがどこにも見当たりませんでした。 VS6.0のVBではLIBファイルも作成されました。 VS2008のVBでLIBファイルを作成する方法をご存知の方いらっしゃいましたら教えてください。 LIBファイルを使用する理由は、VBで作成したDLLをC++に組み込むときにリンクさせる為です。 ※今回はLoadLibrary関数を使わず、LIBファイルを使おうと考えています 以上、宜しくお願い致します。

  • VB6.0exeから.NETのDLLを呼び出した場合の実行時エラー’429’について

    お世話になります。 環境はWindowsXPです。 現在、VB6.0のexeから.NETのDLLを使用する・・・というのをしています。 以下の手順を踏み、実行してみたのですがどうも上手く行きません。。。 (1).NETのDLLを作成 (2)COMとして利用するために、.NET 2003コマンドプロンプトから「regasm」コマンドにてレジストリに登録 (3)tlbexpコマンドで、タイプライブラリを作成 (4)VB6のプロジェクトから(3)を参照設定する (5)VB6から.NETクラスを生成し、呼び出す (6)プロジェクトをコンパイルし、exeを生成 この手順にて実行すると「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」という エラーメッセージが出てしまいます。 windows updateをしてみたり、VB6.0のランタイムをインストールしてみたりしたのですが、 どうもダメみたいで困っています。 解決方法などご存知の方がいらっしゃいましたら、 ご教授いただけると大変助かります。 よろしくお願いいたします。

  • VB.NETで、DLLを頂いたんですが・・

    VB.NETでプログラムを作成しているのですが、 DLLを頂きました。 このDLLをプログラムで使いたいのですがよくわかりません。 (1)DLLは実行ファイルにおけばいいんですよね? (2)DLLを参照しろっていう設定は必要ですか? (3)DLLには、プロパティ、メソッド、イベントとあるみたいなんですが、これらを宣言しないといけないと思うのですがどうやればいいのでしょうか? (4)下のような資料もらったのですがVBcnvというのが定義されていないとエラーがでるのですがどうやって宣言するのでしょう? private <任意名> as VBcnv (5)libファイルも一緒にあったのですが、どういう風に使えばいいのでしょうか?何につかうのでしょうか? すいません、どなたかお助けを~

  • VBの複数プロジェクトの実行

    マニュアルをみながらVB.NETで簡単なプロジェクトをいくつか作成してみました。それ自体はそれなりに動くのですが、そのプロジェクトの中から、他のプロジェクトに処理を移すのはどうしたらいいのでしょう。 例えば、一つのプロジェクトで作った画面の中にボタンを作って、それを押したら他のプロジェクトに移って今度はそちらで作った画面に切替えたいのです。その場合はどうしたらいいのでしょうか?

専門家に質問してみよう