人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VisualBasic6.0(以下、VB6)にて、
アプリケーションの作成→インストール→実行を行いましたが、
以下の理由により、起動しません。

実行時エラー'49'
Active X コンポーネントはオブジェクトを作成できません
実行時エラー '53'
ファイルが見つかりません

原因と対策について、ご教授ください。

<経緯>
1. VB6にて、アプケーションAを作成
2. VB6にて、Aからコールされる関数を含むDLL Bを作成
3. DLL Bをregsvr32 コマンドでレジストリへ登録。
4. Aの実行(DLL定義の関数のコール)を確認。
5. ディストリビューションウィザードを使用して、アプリケーションAの
プロジェクトを指定して、setup.exeを作成。
この時、ファイル追加指定にて、「DLL B」を指定。
6. 作成したセットアップファイル一式を別環境(別のPC)へコピー
7. インストールを実施。
→インストールは成功しました。
8. スタートメニュー→プログラム→アプリケーションAを起動。
→エラー発生により、アプリケーション起動せず。

regsvr32を手作業にて実行し、DLL Bを登録した後は、
実行時エラー '53'
とのエラーとなります。

●質問者: futurista
●カテゴリ:コンピュータ
✍キーワード:Active DLL exe pc vb6
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● pahoo
●10ポイント

この時、ファイル追加指定にて、「DLL B」を指定。

この部分ですが、フルパスで指定していませんか?

または、DLL B が 実行形式ファイルとは別の、PATHが通っていないディレクトリにインストールするような設定になっていませんか?


アドレスはダミーです。http://www.hatena.ne.jp/

◎質問者からの返答

回答有難うございます。

>> この部分ですが、フルパスで指定していませんか?

フルパスでないとは、カレントとするのでしょうか?その指定をどこで行うのでしょうか?

>>または、DLL B が 実行形式ファイルとは別の、PATHが通っていないディレクトリにインストールするような設定になっていませんか?

よくわかりません。どういう意味でしょうか?


2 ● きゃづみぃ
●5ポイント

DLLは EXEと同じところに 置いてみたらいかがでしょうか?

また、そのDLLから参照しているDLL等は ありませんでしょうか?


http://okwave.jp/qa3507515.html

◎質問者からの返答

回答有難うございます。

>>DLLは EXEと同じところに 置いてみたらいかがでしょうか?

開発環境での話しですか?インストール先での話しですか?

>>また、そのDLLから参照しているDLL等は ありませんでしょうか?

そのDLLとはDLL Bのことでしょうか?

参照しているDLLとは、どのように調査すればよいですか?

どこかにパスが記載されているのでしょうか?


3 ● pahoo
●10ポイント

#1 で回答した者です。

DLL B については、ディストリビューションウィザードのセットアップ先で $(AppPath) になっているかどうか確認してください――ということを言いたかったのですが‥‥開発者向けマニュアルで、ディストリビューションウィザードについて読み込んでください。また、インストーラー全般に関して学んでください。

◎質問者からの返答

回答有難うございます。

DLL Bのセットアップ先のフォルダ指定は、

$(WinSysPath)、$(AppPath) いずれも試行しましたが、

ダメでした。


4 ● きゃづみぃ
●5ポイント

>開発環境での話しですか?インストール先での話しですか?

エラーが出てるのは、どこでしょうか?


>>>また、そのDLLから参照しているDLL等は ありませんでしょうか?

>そのDLLとはDLL Bのことでしょうか?

>参照しているDLLとは、どのように調査すればよいですか?

>どこかにパスが記載されているのでしょうか?

DLL Bです。

DLL Bは、どのように作っているのでしょうか?

あと、DLL BのバージョンとアプケーションAで記憶されているバージョンが違う恐れがあります。

DLL Bを 再度 作り直して その作り直した DLL Bを用いてアプケーションAを作ってみたらいかがでしょうか?

インストールしなおすときは、DLL Bをきちんと regsvr32 /u で 解除してからにしましょう。

http://home.att.ne.jp/banana/akatsuki/doc/other/windows01/


5 ● mj99
●50ポイント

まず、

・「DLL B」はActiveX DLLである

・「アプリケーションA」には「DLL B」の参照設定を追加していない。

・「アプリケーションA」から「DLL B」をコールするときCreateObjectを使用している。

という前提でよろしいでしょうか?

上記の前提であれば、手順に大きく間違ったところはないと思います。

----

ところでService Packは最新でしょうか?

VB6のメニュー「ヘルプ」→「バージョン情報」で確認してください

Microsoft Visual Basic 6.0(SP6)

などと表示されているはずです。カッコ内がService Packの番号です。

最新はService Pack6のようです。

ダウンロードの詳細 : VB 6.0 SP6

----

Service Pack6がインストールされた状態で、

以下の手順を試してください。

1. VB6にて「DLL B」の実行ファイルを作成する

→VBメニューの「ファイル」→「XXX.DLLの作成...」

2. VB6にて「アプケーションA」の実行ファイルを作成する

→同上

3.「アプケーションA」のプロジェクトフォルダから「?????.PDM」を削除する

→Service Pack6適用前のファイルなので、今回に限り削除。

4. ディストリビューションウィザードを使用して、

「アプリケーションA」のセットアップパッケージを作成する

→途中、ファイル追加指定にて「DLL B」を指定。

5. 作成したセットアップファイル一式を別環境(別のPC)へコピー

6. インストールを実施。

7. スタートメニュー→プログラム→「アプリケーションA」を起動。

*開発PC上でregsvr32を実行する必要はありません。

→上記手順1で自動的に登録されます。

*インストール先でregsvr32を実行する必要はありません。

→インストーラがやってくれます

→アンインストーラがregsvr32の登録解除も実行してくれます。

◎質問者からの返答

回答有難うございます。

・「DLL B」はActiveX DLLである

→はい。

・「アプリケーションA」には「DLL B」の参照設定を追加していない。

→はい。但し、regsvr32 でファイルを指定して登録していいます。

regsvr32 /uすると、アプリケーションは起動しなくなります。

・「アプリケーションA」から「DLL B」をコールするときCreateObjectを使用している。

→はい。以前、教授して頂いた通りです。

SP6はインストールしておりませんでしので、

バージョンアップしました。

ご指摘頂いた手順により、setup.exeの作成・インストールを

実施しましたがセットアップ先で、起動しませんでした。

DLL Bのセットアップ先のフォルダ指定は、

$(WinSysPath)、$(AppPath) いずれも試行しましたが、

ダメでした。

なお、現在のエラーは、

「実行時エラ'53' ファイルが見つかりません」

ですので、DLL Bが参照出来ないためのエラーでは無いようです。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ