• ベストアンサー

dllが見つからないのですが・・・

いつもお世話になります。 今回、VBで簡単なアプリケーションを作成しています。 そのなかで「a.dll」を使おうとしているのですが、「a.dllが見つかりません」とのエラーが出てしまいます。 現在、テストとしてwin2000で動かしています。このdllを"WINNT\system32"やこのアプリのあるディレクトリにコピーしてみたのですがそれでも見つからないのです。なにか原因があるのでしょうか?

  • zzZZZ
  • お礼率28% (64/222)

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

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.6

VisualStudioをお持ちでしたら、Dependency Walkerというツールがありますので、a.dllが必要としている他のDLLを調べることができます。 VB単体のパッケージをお使いでしたら、「DLLファイル検出ソフト 」などで調べられます。 http://www.vector.co.jp/soft/win95/util/se054263.html 確認をしてみてください。

参考URL:
http://www.vector.co.jp/soft/win95/util/se054263.html

その他の回答 (5)

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.5

確認なのですが、zzZZZさんが作られたのはa.dllですか? a.dllを呼び出すEXEですか? あと、a.dllなんですが、他のDLLを必要としていませんか? たとえばb.dllなんかを。 regsvr32.exe a.dll が失敗するということは、a.dllはActiveX DLLではなく、 Cで作られた普通のDLLということだと思うのですが。

zzZZZ
質問者

補足

返答ありがとうございます。 私が作ったのはa.dllを呼び出すexeです。 a.dllを作った方に確認しましたが、他のdllを必要とするようなことはないと言ってました。

回答No.4

どうもです。 僕も、こっから先は経験が無いので、推測でしか言えませんが "regsvr32.exe a.dll"を実行すると「"a.dll" is not executable file and no registration helper is registered for this file type」 これは、a.dllがダイナミックリンクライブラリ形式ではないと いうことですよね。 まず、そこら辺を調べてみてはもらえませんでしょうか? こんな回答ですいません。

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.3

再びmaruru01です。 No.2のats8181oyajiさんへ。 替わりに説明していただいてありがとうございます。 さて、この"a.dll"というファイルはひょっとすると、内部の書式などがおかしくて使用出来ないのかも知れません。 これは、どういうファイルなのでしょうか。 どこからかダウンロードしてきたのでしょうか。もしくは自作したものでしょうか。 ダウンロードしてきたのなら、もう一度その場所から落とし直した方が良いかも知れません。 自作した(もしくはしてもらった)ものなら、ソースを見直してみてはどうでしょうか。 では。

回答No.2

こんにちは regsvr32.exeの使い方はa.dllが\syste.32にあるなら regsvr32.exe a.dll とすれば、登録できます。 また、参照リストというのは、VBのメニューからプロジェクト(p) - 参照設定(N)で確認でき、使用するDLLをチェックすると使えるように なります。

zzZZZ
質問者

補足

"regsvr32.exe a.dll"を実行すると「"a.dll" is not executable file and no registration helper is registered for this file type」と出てきます。 参照設定もできませんでした・・・ これはどういうことなのですか?

  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 まず、Regsvr32.exeでdllを登録してみましたか。 あと、参照設定のリストに現れていますか。なければ、参照で読み込んでリストに載せることが出来ますか。 リストにあるなら、チェックしてありますか。 ちなみにいったん参照設定を外してから、再度読み込むとうまくいくとこがあります。 とりあえず、思いつくのはこんなところです。 では。

zzZZZ
質問者

補足

早々のお返事ありがとうございます。 なにぶん素人なのもで重ねて教えてください。 Regsvr32.exeは引数がいろいろあるようですがどのように使えばよろしいのでしょうか? また「参照設定のリスト」とはなんですか? 初歩的な質問で申し訳ないですが教えてください。

関連するQ&A

  • システムディレクトリ以外の場所に*.dllをコピーしてVBから実行したい

    現在,unlha32.dllを使用した,解凍プログラムを作成中です。 unlha32.dllが存在しないパソコンには,システムディレクトリにdllをコピーして実行するわけですが,WinNT,Win2000などでは,管理者以外は,システムディレクトリへの書込みが出来ません。 そこで,システムディレクトリ以外のディレクトリにコピーして,それをVBから呼び出す,というかたちを考えているのですが,どのようにしたら良いのか分かりません。よろしければ,教えて頂けないでしょうか? ただし,unlha32.dllを使用していることを,利用者に知られたく無いので, 事前にインストールしてもらうという手は使えません。 どうか,よろしくお願いします。

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

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

  • VC++で作成したDLLについて

    すみません、 VC++6.0で作成したDLLについて教えていただきたいのですが。 TEST_A.DLLというDLLと、TEST_B.DLLというDLLファイルを作成したとして これをC:\TEST\DLL\に格納してるとします。 このとき、TEST_B.DLLからはTEST_A.DLLの関数を呼び出しています。 次に、TEST_B.DLLの関数を使用しているTEST.EXEという実行ファイルを VB6.0で作成します。 このファイルをC:\TEST\EXE\に格納します。 そして、TEST.EXEを実行すると、 「TEST_B.EDLLが見付かりません」と言って怒られてしまいます。 VBでは、TEST_B.DLLをフルパスで指定しております。 しかし、TEST_A.DLLをEXEと同じ場所に置いてあげると 正常に動きます。 これは、TEST_B.DLLからTEST_A.DLLが見えていないということなのでしょうか? TEST_B.DLLの設定がおかしいのでしょうか? それとも、TEST.EXEでもTEST_A.DLLをフルパス指定してあげないといけないのでしょうか? ちなみに今回、プロジェクトマネージャーから「環境変数(PATH)の設定はしたくない」と言われていますので、PATHの指定はしてません。 すみませんが、どなたか教えていただけますでしょうか?

  • 「msvcrt20.dllが見つかりません」というメッセージが・・・・・

    パソコン起動毎に「msvcrt20.dllが見つかりません」というメッセージが出て困ってます。 VB4.0やVB6.0をインストールしたり、アプリケーションCD-ROMからmsvcrt20.dl_(.dllはありませんでした。)をコピーして指定の場所(C\WINDOWS\SYSTEM)に貼り付けました。 ですがmsvcrt20.dllを何度インストールし直してもメッセージが出てきます。 何か良い対処法は御座いませんか?お願いします。 【OS】Win98 SE 【PC】NEC PC-VS2000 simplem

  • 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)

  • dllのロードアドレスについて

    いつもお世話になっております。 現在、アプリケーションのデバッグを行っていて、dllのロードについて不明な点があります。 C++で作成したアプリケーションを起動すると、main関数が呼ばれる前に「アプリケーションが正しく初期化されませんでした(0xc0000005)。」というダイアログボックスが表示され、エラー終了してしまうという現象が発生しています。 但し、このアプリケーションは共通のソースを使用して、条件コンパイルによってGUIの描画部分等が違うといった、複数のアプリを作成することができます。そして、このうちの1つのアプリのみ上記のようなエラーが発生してしまいます。 デバッガによって正常に動くアプリとエラーになるアプリとで、アプリ実行時にロードされるdllの基底アドレスに違いがあるということが分かりました。 ※エラーになる方は、明らかに不正なアドレスにロードされているdllがあります。大抵のdllは0x60000000以降のアドレスですが、0x00300000代にロードされるdllがあります。 そこで、アプリケーションが実行時にロードするdllの基底アドレスが不正になってしまう理由がわかればと思い質問いたしました。 (コンパイル時のリンクオプション等が間違ってしまっているのかと思っています。。。) そもそも、dllがロードされる基底アドレスがどのように決まるものなのかも分からないのですが、どなたか御教授して頂けないでしょうか? 以上、よろしくお願いします。

  • dllが無いってでるんですが..

    ASPのVBスクリプトから-->VBで作成したdll-->MFCのdllという風にCALLされています。 MFCのdllがNotFoundでエラーになってしまいます。 もちろんdllファイルはあるしPATHも張ってあります。 なにかヒントになることでもいいので 教えてくださーい!

  • windows10 VB unlha32.dll

    VB で、debug モードでビルドするとOK,ですが、release モードでビルドすると下記エラーになります。 ”unlha32.dll がインストールされていません” unlha32dll は、実行ファイルのカレントディレクトリ、cドライブのwindows、その下のシステム32、sysWOW に入れています。windowsXP、VS2010のころに造った物を、win10用に流用して作り替えています。今は、VB2017 です。 解決方法を教えてください、unlhaの置き場、パス指定か、VBのreleaseビルドの設定か、などと類推します。. 

  • VB6から参照可能なDLLの作成

    VB6から参照可能なDLLの作成を参考書をみながらしましたが、上手くいかない為質問させていただきます。 開発環境VC++ 2005 C++ CTEST.dll #include <windows.h> __declspec (dllexport) int __stdcall test(int i) { i = i + 5; return i; } .defファイル LIBRARY "test" DESCRIPTION EXPORTS A 以上でDLLを作成し、VB6側で Private Declare test Lib "CTEST.dll" (ByVal i as integer) で宣言しても「エラー53 ファイルがみつかりません」と表示されます。「参照の追加」から参照しようとしても「このファイルは参照できません。」をエラーがでてしまいます。 直すべき点はどの部分なのでしょうか? ご教示ねがいます。

  • VisualStudio2010 DLL作成方法

    VisualStudio2010を使っています(初心者)。 VBで作成していたのですが、一部VC++を使わなければいけなくなりました。VC++はDLLで作成して、VBの方でDLLを参照して処理を行いたいと考えています。 そこで試しに作成したVC++で作成したDLLをVBで参照しようとしたらERRORになってしまい上手にできませんでした。※ERRORの内容までは詳しく覚えてません。VC++のDLLを作成~VBのDLLの参照までを説明しているサイトなどありましたら教えて下さい。 よろしくお願いします。