• ベストアンサー

VBの参照設定について

はじめまして、Doryaです。 早速ですが、VBでACTIVEX.DLLを作成してローカルのドライブにおいてEXEプログラムより参照設定しています。 このEXEをコンパイルして、他のPCへ移しましたがプログラムが、起動しませんでした。他のPCも、コンパイルしたPCと同じようにACTIVEX.DLLを、デシトリビューションウイザードで作り登録していました。 どうも、参照設定がうまくできてないような気がします。ためしに、プログラム(EXE)をデシトリビューションウイザードを使ってインストールしましたら、問題なくうごきました。これって、DLLとEXEを別々にコピーして、配布することはできないのでしょうか?

  • dorya
  • お礼率70% (7/10)

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

  • ベストアンサー
noname#9414
noname#9414
回答No.1

ActiveXを使用したDLLを作っているのだとしたら、 Regsvr32.exeで登録しないと参照してもみつからない というエラーで動作しないと思いますよ。 どうしても別々に配布したいのであれば、レジストリへの 登録の仕方も一緒に書かないといけないでしょう。 ではでは☆

dorya
質問者

補足

早速の回答有り難うございます。 ご指摘のとおり、REGSVR32.EXEを使って、EXEを作成した端末と同じ構造(たとえばD:\DLL)にDLLをコピーし、レジストリに登録しました。しかし、EXEを実行しましたが、動きませんでした。VBPを開いてみるとやはり、参照不可になっていて、(参照設定の)チェックを外して、再度参照設定をし直すと動きました。 DLLの登録する場所(Winnt\System32とか?)、またはREGSVR32.EXEの記述の方法がまずいのでしょうか? それから、何回も登録したため、参照設定の参照可能なライブラリファイルがたくさん出てきて、regsvr32.exe -u コマンドでも削除できない状態です。これも、何か関係しているのでしょうか?

その他の回答 (1)

  • Hk2001
  • ベストアンサー率48% (24/49)
回答No.2

c:\windows\systemにDllをコピーしたら動きませんか? コンパイルしたPCはレジストリに参照先を覚えているようなきがします。 レジストリに登録されていないとsystemを見に行くような。 推測ですいません

dorya
質問者

お礼

ご指導有り難うござます。 結局、再インストールしまして、動くようになりました。 やはり、何回もDLLを作り直して参照設定がうまくできて いなかったようです。 根本的な解決ではありませんが・・・。 いろいろ有り難うございました。

関連するQ&A

  • VB6.0(SP6)にて開発を行なっています。参照設定に関して教えてく

    VB6.0(SP6)にて開発を行なっています。参照設定に関して教えてください。 ソースコードはVSS(VisualSourceSafe)にて管理しています。 3つのフォルダにそれぞれVB6.0のプロジェクトがあります。 C:. +---フォルダ1 | ProjectA.dll ←このdllはVSS管理されていない。 | ProjectA.vbp | +---フォルダ2 | ProjectB.dll ←このdllはVSS管理されていない | ProjectB.vbp | \---フォルダ3 ProjectC.exe ←このexeはVSS管理されていない ProjectC.vbp 上図にはdllファイルもexeファイルも記載してありますが、dllファイルとexeファイルはVSSでは管理(登録)しておりません。各開発担当者はVSSから最新のソースコードを取得して、各自のローカル環境でビルドを行なってdllやexeを生成します。 ProjectA.vbpはProjectA.dllを生成します。 ProjectB.vbpはProjectB.dllを生成します。 ProjectC.vbpはProjectC.exeを生成します。 ここでProjectC.vbpはProjectA.dllとProjectB.dllを参照しています。 ここからが質問なのですが、A君の環境でProjectA.dllとProjectB.dllを生成したあとProjectC.vbpをビルドすると問題なくProjectC.exeが生成できます。ところが、B君の環境で同じことをやろうとすると、ProjectA.dllとProjectB.dllを生成まで問題なくできるもののProjectC.vbpをビルドしてProjectC.exeを生成する際に、ProjectA.dllとProjectB.dllが参照エラーとなってしまいます。参照設定をし直せばB君の環境でもProjectC.vbpをビルドしてProjectC.exeを生成できるようになります。ところが、参照設定し直したProjectC.vbpをVSSにチェックインして、A君の環境で最新ソースを取得してProjectC.vbpをビルドしようとすると今度はA君の環境でProjectA.dllとProjectB.dllが参照エラーとなってしまいます。 各開発担当者のローカル環境で参照設定をしなおさずに済むようなプロジェクトの設定方法がありましたら教えていただけないでしょうか。よろしくお願いします。 (なお、変更したのはProjectCの参照設定のみであり、ProjectAとProjectBには一切変更箇所はありません。)

  • 参照設定で教えてください

    VB6です。 プロジェクトの参照設定でライブラリを追加してコンパイルしたexeファイルを他のパソコンで使用する場合、そのライブラリファイルも必要とするのでしょうか?

  • VB.NET2005の参照設定について

    VB.NET2005の参照設定について 新規プロジェクトで開くときにすでに作成したクラス(dll)を、デフォルトで参照設定されているようにできないでしょうか?

  • VB6のランタイムについて

    VB6のランタイム配布について質問があります。 下記コントロール、またはDLLをVB6ランタイムが入っていない環境にインストールしようとした場合、ランタイム配布は必要でしょうか? 1.ActiveXコントロール(いわゆるユーザコントロール) 2.ActiveX.DLL(当DLLはCからCALLします)

  • VB.NETで参照設定

    Visual Basic .NET について質問致します。 VB 6.0は使用していたのですが、.NETに関して初心者です。 VSSにてファイル管理をしています。 共通で使用するためののオリジナルDLLを作成し 参照設定をしているのですが、参照パスがフルパスで設定されているため (プロジェクトのプロパティページの「参照パス」のフォルダのところ) VSSから最新プロジェクトファイルを取得した後 いつも参照パスを自分のローカルのパスに変更しなおさなければいけません。 とても効率が悪く、もっといい方法があるかと思うのですが、 教えていただきますようお願い致します。

  • VB.Netでのエラーについて

    こんにちわ。 いまVB.Netでプログラミングしている者です。 あるVBプロジェクトファイル(aaaa.dllとします)で ある.dllファイル(bbbb.dllとします)を参照設定しています。 そこでこのVBプロジェクトファイルをビルドすると, このVBプロジェクトファイル内のあるVBファイルの行で, 「Public Function ~」はプロジェクトbbbb.dllで宣言されていますが,プロジェクトaaaa.dllによって参照されていません。」 というコンパイルエラーになってしまいます。 ソリューションエクスプローラで見たところ, 上記のVBプロジェクトファイルの参照設定で,bbbb.dllはエラー表示されていません。 念のためbbbb.dllを一旦削除して,最新のbbbb.dllを改めて「参照追加」したのですが,状況が変わりません。 このエラーは何が原因なのでしょうか? 教えてください。よろしくお願いします。

  • VB6やVB.NETはコンパイル無しで使えますか?

    VB6やVB.NETをはじめてみようかと考えているのですが、 MatlabやVBA、mathematicaなど、他のプログラムのように コンパイルせずにexe形式にせず実行することって可能ですか?

  • VistaでVBのコンパイル

    VB素人ですが、教えてください。 現在XPのPCでVB6SP3で開発をしています。 mshflxgd.ocxを使ったEXEをコンパイルして、 VistaのPCで起動すると表示されません。 同じプログラムをVistaのPCのVB6SP3でコンパイルして起動すると表示されます。 何か違いはあるのでしょうか。 mshflxgd.ocxはレジストリ登録済みです。 あと、同じプログラムなのにコンパイルした際、EXEのサイズが違いました。Vistaの方が4Kほど大きかったです。 何かご教授頂けないでしょうか。 よろしくお願いします。

  • 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の参照設定をコードで書くことは出来るのでしょうか? DLLの登録、参照設定をコードの中でやってみたいだけなのですが・・・

専門家に質問してみよう