• ベストアンサー
  • すぐに回答を!

インターフェイスIDを変えずにVBのDLLをリコンパイルするには?

VBのDLLをリコンパイルするとインターフェイスIDが更新されてしまうので使用しているVBのAPは参照設定を張り直さなければならないし、使用している端末はレジストリ登録をしなおさなければならない(DOS窓からregsvr32コマンドを使用しています)という始末で大変困ってます。 リコンパイル時インターフェイスIDを更新せずにすませる方法はないでしょうか。 もしくは、「インターフェイスIDは更新されるもの」なのでしょうか。

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

  • 回答数2
  • 閲覧数605
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • yoshioz
  • ベストアンサー率28% (10/35)

プロジェクトのプロパティにある [コンポーネント]タブの[バージョン間の互換性]で [プロジェクト互換]または[バイナリ互換]を指定すると IDは変更されません。 ただし、インターフェースを変更すると 確認メッセージが表示されることになります。

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

質問者からのお礼

アドバイスありがとうございました。 「バイナリ互換」にすることでインターフェイス を変更することなくリコンパイルすることができました。

関連するQ&A

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

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

  • VBから参照できないCのDLLを使用する方法

    Cで作成されたDLLがあるのですが、VBから参照設定しても「指定されたファイルへの参照は登録できません。」と怒られます。 そのようなDLLをどうしてもVBから使用したい場合はどうすれば良いでしょうか? 直接は無理だとしても、間に何かをかましてできると思うのですが、良い方法があれば教えてください。 ちなみに VB6 です。 よろしくお願いします。

  • c++のdllが参照できません

    c++で作成したDLLをVBから参照したいのですが、 VBでの宣言はうまくいっていて自分の端末では動作するのに 他のPCではDLLがありませんとエラーがでるのですが System32の直下にDLLはありsystem32直下の他のC++のDLLは参照できるのに 今回新規で作成したものに関してうまくVBがDLLをみつけることが できません 条件は自分の端末とあわせました。 パスの指定など必要なのでしょうか? アドバイスください

その他の回答 (1)

  • 回答No.2
  • mnabe
  • ベストアンサー率33% (427/1283)

”バイナリ互換”で出来ます。

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

関連するQ&A

  • VBでの実行時エラー’429’について

    お世話になります。 PC環境はWindowsXP SP2です。 VB6.0のexeから.NETのDLLを利用する・・・というのをしているのですが、 3台のPCのうち、一台だけどうしても「実行時エラー'429'ACtiveXコンポーネントはオブジェクトを作成できません」というメッセージが出て異常終了になってしまいます。 この一台だけOSから再インストールし直しても動かず、困っています。 .NETのdllにデバッグ用のメッセージを組み込んでみたのですが、 メッセージが出ないので、どうやらDLLコール時にエラーとなっているようです。 Windows ScriptのVB Scriptを最新にしてみたり、 system32配下にdao360.dllがなかったので、追加してregsvr32コマンドにてレジストリ登録したりしたのですが、 どうも上手くいきません。 お忙しいところ恐れ入りますが、 何か思い当たる点などありましたらご教授願えませんでしょうか? よろしくお願いします。

  • VB2008でのDLL作成方法について

    はじめまして、はじめて投稿します。 初心者なので変な質問をしていたらすいません。VB2008を使用しています。 VBで作成したDLLファイルをLabviewで使用したいと思っています。 ただVB6.0でActiveX DLLを作成する方法はわかるのですが、VB2008で作成する方法がわかりません。 クラスライブラリでプログラムを作成し、DLLにすることはできるのです・ しかしレジストリに登録しようと思い「regsvr32 ファイルのパス**.dll」と入力したところ「**.dllは読み込まれましたが、DllRegisterServerエントリポイントが見つかりませんでした」と出ます。 調べてもVB2008でのActiveX DLL作成方法が見つからなくて困っています!!! わかるかた、よろしくお願いいたします。

  • オブジェクト(dll)のレジストリ登録について

    いつもお世話になっております。 dllの使い方について教えてください。 vb5.0で開発を進めているのですが、 dllを呼び出す際に、レジストリ登録を しなければいけないのでしょうか? いくつかのサイトでは、参照設定際すれば、 実行できているようです。。 実行環境では、レジストリ登録しないと 動かない場合があるということでしょうか? ご教授、よろしくお願いします。

  • Windows Live Messengerについて。

    昨日まで普通にログインできていたのに 急にログインできなくなってしまいました(;><) サインインしようとすると「81000378」のエラー番号が表示されます。 メンバーリストが利用できないらしいです ヘルプを参照すると 以下のコマンドを 1 つずつ入力し、各コマンドの最後で Enter キーを押します。各コマンドが正常に実行されると、"DllRegisterServer は成功しました" というメッセージが表示されます。このメッセージを確認してから、次のコマンドを入力してください。 regsvr32 softpub.dll regsvr32 wintrust.dll regsvr32 initpki.dll regsvr32 rsaenh.dll regsvr32 mssip32.dll regsvr32 cryptdlg.dll regsvr32 dssenh.dll regsvr32 gpkcsp.dll regsvr32 slbcsp.dll regsvr32 sccbase.dll とあります。試してみたところ regsvr32 initpki.dll regsvr32 gpkcsp.dll regsvr32 slbcsp.dll regsvr32 sccbase.dll の4つが見つかりません とのことでした^^; どなたかわかりませんか???

  • DLL VB Wheel ホイール

    VB6で、アクティブでない(フォーカスのない)コントロールの上に マウスポインタを持ってきて、ホイールが効くようにしようとしてます。 ネットで検索したところ、NYWheelなるものが以下のサイトに、 フリーで、しかもソース付でありました。 http://park1.wakwak.com/~y-nagano/Programs/nywheel/ どうやら、そのサイトにあるDLLをVB6で参照し使用すれば、 目的の事が出来るのではないかと思い、ソースを読もうとしたところ、 VC++の様で、僕には理解できませんでした。 (一応、VCで作ったDLLをVBで読むようにする事が書いてあるサイト http://www.h4.dion.ne.jp/~fht/htmkdll/ を見つけ、試してみましたがお手上げでした。) そもそも、そのDLLがVBで使えるのかどうかもわかりません。 ソースを修正したら、VBでも使える様になるのでしょうか? 納期も迫っているので、回答しようにも分からないので困ってます。 環境はWindowsXP(SP2)+VisualStadio6(SP5)です。

  • C#のコントロールdllをVBツールボックスに追加

    宜しくお願いします。 現在、C#で自作のカレンダーを開発し 自作カレンダーをVBのツールボックスへ登録し Formへデザイン(追加)しようとしております。 テストの段階では、テスト用のプロジェクトから dllを参照しnewすることで表示ができておりましたが ツールボックスから貼り付ける形で使用したいということで 調べて色々試しております。 ・ツールボックスのアイテムの追加で.NET Framework の一覧に表示がされない ・ツールボックスのアイテムの追加 > 参照ボタンでdllを指定すると  「ツールボックスに含めることのできるコンポーネントは何もありません」  のエラーが出る ・ネットで調べ、GACへの登録を試しましたがgacutil.exeがPCの中にない ・コマンドプロンプトでコマンドを実行( gacutil /i calendar.dll )し、  レジストリには登録されているが一覧には表示されない という現状です。 ・dllのプロジェクト設定でCOM相互運用機能の登録にチェック。効果なし ・dllのプロジェクト設定でアセンブリをコム参照可能にするにチェック。効果なし ・追加する側、AutoToolboxPopulate を [true]に設定。効果なし という現状です。 そこで質問なんですが ・dll側で必要な設定やコード等があるんでしょうか? ・追加する側で必要な操作等はありますか? ご教授宜しくお願い致します。

  • VBで使用できるDLL(SSL通信)をVC++で作成する。

    VBで使用できるDLLをVC++で作成しました。 内容は、SSL転送をWindowsで行うためのDLLです。 DLLではなくexeで作成したときはDOS窓からうまく動いたのですが、 DLLで作成をして、VBから呼んだときにエラーメッセージがでてプログラムは実行されません。 エラーメッセージは、 実行時エラー'53': ファイルが見つかりません:dll-file-name です。 エラーにはいろいろな要素があると思うのですが、 このエラーが出るか出ないかは、関数の中のSSL通信のプログラムを書くと このエラーがでます。 例>SSLeay_add_ssl_algorithms(); SSL通信の記述がなければ正常に実行されるので、この部分だけだと思うの ですが、特別な設定、記述があれば教えてください。 よろしくお願いします。

  • regsvr32.exe による DLLの登録について

    質問は2つあります。以下、よろしくお願いします。 1.通常DLLはレジストリに登録しなくても使用できますが、どういう場合に登録が必要なのでしょうか? 2.regsvr32 xxx.dll を実行したところ、以下のようなエラーとなってしまいました。正しく登録するにはどうしたらいいのでしょうか? xxx.dll は読み込まれましたが、DllRegisterServer エントリポイントが見つかりませんでした。このファイルが登録されていない可能性があります。 以上、よろしくお願いいたします。

  • VC++で作成したDLLをVBから呼ぶと戻り値が化けてしまう

    はじめまして。いつも勉強させていただいております。 VCは今回初めてやっておりますので当たり前の質問 になってしまうかもしれませんがご教授願います。 以下のような仕様でものづくりを行っております。 1.VBよりVC++で作成したDLLを呼び出す。 2.VC++で作成したDLL側ではパラメータより取得した   値を元に足し算をした結果を   戻り値にセットして要求元に返却する。 といった流れで考えています。 2の部分についてはExeを一度作成し実行させた ところDOS窓に値が表示されました。(printfで) しかし、正しくOUTPUTされた値がVB側の戻り値と して返却された時点で参照すると「-6348」 となっています。 なぜこうなってしまうのか原因がわからず投稿 させて頂きました。 ご存知の方、ご教授下さい。 ************************************************* VC++ DLL側のソース ************************************************* #include <windows.h> #define DLL_EXPORT __declspec(dllexport) extern "C" { DLL_EXPORT int add(int a,int b); } int add(int a,int b) { return a+b; } ************************************************* VB  DLL呼び出し元 ************************************************* Option Explicit Private Declare Function add Lib "C:\Program Files\Microsoft Visual Studio\test\Debug\test.dll" Alias "_add@8" (a As Long, b As Long) As Integer Private Sub Command1_Click() Dim ret As Long ret = add(1, 2) MsgBox ret End Sub 環境 OS:WinXP 言語:VC++6.0    VB6.0(SP6)

  • dllを参照追加をするときのパスについて

    VS2015で開発をしていてサードパーティ製のツールを使用しています。 そのうちのいくつかのdllをプロジェクトに参照追加しています。 端末(1)で新たにdllを参照追加しました。 端末(2)でフォルダ階層の違う場所でソリューションを開くと さきほどのプロジェクトの参照追加したdllに参照できないマークがつき、コンパイルするとワーニングが出力されます。 これはなぜでしょうか? また、以前から追加されているdllの「.csproj」内のパスは 端末(1)にはないディレクトリとなっているのですが、エラーになりません。 このプロジェクトファイル以外にもパスを管理しているものがあるのでしょうか? ご存知の方がいらしたらご教授頂きたいです。

専門家に質問してみよう