• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:LoadLibraryでAccess Violation 発生。)

LoadLibraryでAccess Violation 発生

gamera2950の回答

回答No.2

こんちは 上記現象は解決できませんが、面倒くさくても、該当の部分だけの 簡単なプログラムを作成し、複数のPCで実施してみてはどうでしょうか? そして、 1)現象は同じ =>PCの環境依存 2)動く =>作成したソースコードの他の部分に問題がある と、なりまして2)の時には 今あるソースコードから、LHAの部分は当然残して、余計な部分を削除していき 障害が発生しなく(2)の状態)なるまで試す。 ソースコードが膨大ならば、ぐぐって似た現象を探す でしょうか、おちからになれず

task5963
質問者

お礼

調査進展がありましたのでご報告です。 kmeeさんへのお礼と同じ文面となりますがご容赦下さい。 ご指摘の通り、LoadLibrary自体には問題無く m_hUnlha(グローバル変数)に値を登録する所でAccess Violationが発生しておりました。 以下の様に、ソースを変更したため発覚しました。 ---------- HMODULE hTest; hTest = LoadLibrary( "UNLHA32.dll" ); m_hUnlha = hTest; ←ここでAccess Violation ---------- アセンブラに詳しい者が調査したところ 正常に動いているアプリと動かないアプリでは m_hUnlha = hTestの時に使用しているレジスタが違っていたようです。 原因は不明で、あくまでも予想ですが こちらもご指摘の通り、初期化やメモリの解放などの処理が雑になっており、 おそらくメモリの管理、マッピングに不備があるのでは?と考えています。 継続調査は致しますが、応急処置をし問題をクローズする事になりましたので 質問の方も解決済みとさせて頂きたいと思っています。 中途半端で申し訳ないですがよろしくお願いします。 お付き合いいただきありがとうございました。

task5963
質問者

補足

回答ありがとうございます。 簡単なプログラムを作ってみたところ、正常に動いているようでした。 ソースコードは少し大き目なので、 bluecampusさんの回答も参考にプログラムの別の部分も見直してみようと思います。

関連するQ&A

  • LoadLibraryについて

    いつもお世話になっております。 現在、WindowsXP(SP2)、VisualBasic6.0(SP6)を使って開発中です。 他社が作成したソースを解析しているのですが、分からない事があったので教えてください。 hModule = LoadLibrary(strDLLFullPath) として、strDLLFullPathに指定されているDLLを呼び出しているのですが、VBでデバッグしていると、【返り値(hModule)=0】となっています。 ロードに成功すると、アドレス空間に割り振ったDLLのインスタンスハンドルが返って来る筈だから、【0】が帰って来たという事は、ロード出来てないという事ですよね? しかしこのソースをコンパイルして単体のアプリとして動かすと、きちんとハンドルを取得できるのです。 動作環境は同じなのに、なぜこのような違いが生じるのでしょうか? 何か御存知でしたら教えてください。 宜しくお願いします。

  • C言語でのaccess violationについて

    Microsoft Visual C++でプログラムを行っていたのですが、プログラムを実行すると、エラーが発生します。 そこでデバッグを行ったら、 ハンドルされていない例外は”アプリ名.exe”にあります :0xC0000005:Access Violation。 というメッセージが出てきました。 ネットでAccess Violationについて調べたのですが、いまひとつ理解できません。 これはどういうことなのでしょうか?また、解決策をご教授願えないでしょうか? 初心者なので、可能な限り専門用語などを使わない、わかりやすい解説をしていただけると幸いです。お願いします。

  • Access Violationについて

    VC++6.0 MFCダイアログベースアプリを作成しているものです。 メインダイアログの他に別ダイアログを追加しようと思い、 新規にクラスを追加し、ダイアログを作成しました。 メインダイアログに終了ボタンがあり、押下することにより、 OnClose()を呼び、アプリを終了させています。 ここで、終了ボタンを押すと、以下のメッセージが表示されます。 ハンドルされていない例外は*****にあります。 0xC0000005: Access Violation 新規追加したクラス宣言部をコメントアウトすると、例外が発生しませんでした。 VC初心者でして、このエラーがメモリー関係では?とは想像がつくのですが、 どのようにアプリに影響しているのかがわかりません。 Access Violationが発生した時の対処法とかクラスを新規追加したことによる、 影響範囲がどの程度あるのか等、ご教授願えませんでしょうか? よろしくお願い致します。

  • 「EAccess Violation・・・」のApplication Error がでます 

    FXソフトでApplication Error として「Exception EAccess Violation in module VT Trader.exe at 0012EF53.Access Violation at address 0012FF53.Write of address 0012FF53. 」がでます。別のパソコンでは正常に起動するのですが、この原因がわかりません。どなたか教えてください。

  • 例外発生(アクセス違反)

    こんにちは。 VB6で開発した自作アプリを実行すると アプリケーション例外が発生します。 ワトソンログを見ますとc0000005(アクセス違反)となっています。 ただ、コンパイルしなおしたEXEで実行すると問題なくできます。 (プログラム等は一切変更しておりません。) 例外に関しましても発生する場合と、しない場合があり、 頻度も3割くらいです。。。 確証はないのですが、別のパソコン(OS)でコンパイルしたEXE を実行すると必ず例外発生しているような。。。 (複数機能があるのですが、特定のもののみ例外発生します) こういう場合、プログラムに問題ありと考えるべきでしょうか???

  • 【VC++6.0(MFC)】Access Violationの対応の仕方

    いつも大変お世話になっております。 VC++初心者です。 現在、VC++6.0(MFC)で先人が作成したソースを改良しています。 デバグモードで動かすと、 以下のメッセージが表示されるのですが、 どのように対応すればよいか、教えていただけませんでしょうか。 「例外処理 (初回) は XXXX.exe (NTDLL.DLL) にあります: 0xC0000005: Access Violation」 (※XXXXはプロジェクト名です。) (※デバグモードで動かすと同時に上記エラーが出力されます。) 上記のエラーが出ていても動かせるのですが、 デバグモード時に、メニューの「デバッグ」、「例外処理」で 「 Access Violation」の設定を 「ハンドルされてなければ停止」から「常に停止」に変更すると、 最初の画面も開けずに、混合モード画面の 7C95AB0A inc dword ptr [eax+10h] という箇所で必ず止まって、落ちてしまいます。 ここから、どのように対処すればよいか、ご教授頂きたくお願いします。

  • libファイル無しでかつLoadLibraryを使わずにロードする方法

    お世話になります。 現在eMbedded VC でソフト開発を行っています。 今Libファイルが無く、ヘッダファイルとdll本体 だけが有るライブラリがあります。 このライブラリのソースはありません。 このライブラリを使用したい場合、LoadLibraryで動的ロードを行えばよいのですが、 どうしても静的に(Libファイルを用いるときのように)ロードを行いたい場合はどのようにすればよいでしょうか? 例えば ・ヘッダとdllからlibファイルを逆生成して使用する方法 やツールについて 等等・・ (原理的に無理な場合はそのようなご回答もお待ちしております。) お忙しい中ですが、皆様宜しくお願いいたします。

  • DLL内部異常発生時、EXEをまきこまれない

     現在、Windows上で動作する、とあるEXEを開発しています。 <EXE実行環境> OS:Window7 32bit <EXE開発環境> MS VC++2008 ※言語は、C++/CLI <DLL開発環境> MS VC++2008 ※言語は、C++ 私自身が携わっているEXEから、必要に応じて、外部委託したDLLを呼出すことを行っています。 現状、結合テストを行っている最中なのですが、この「DLL」がひどいできで、頻繁に異常終了します。 DLL異常終了で、EXEが巻き込まれてしまう為、テスト者に頻繁に呼出されてしまうのを避けたいのです。(このDLLの開発チームというか、開発者が、そもそもテストしたのかどうか疑っているレベルです) 例えば、EXE側で例外トラップ等をしてやることで、DLL内部で発生した異常を完全に捕らえることは可能でしょうか。 また、別途良い方法はないでしょうか。

  • Access2007で質問をした内容と同様なのですが、Access20

    Access2007で質問をした内容と同様なのですが、Access2000も持っていた為、そちらで実行を行いました。(ふりがなウィザード等) ウィザードを起動すると、Access2007と同様に「DLL読み込みエラー」が発生してしまいます。 原因となる事を考えた所、このマシン(PC)のOSですが元々VistaマシンにWin7をクリーンインストールしている事が原因かと考え付いたのですが、如何でしょうか? 何れにしても、何とかAccessを使用したいと思っておりますので、対処法をご教授願います。

  • DLLをREGSVR32しないで利用する方法について。

    こんにちは。 Visual Basic 6.0でActiveX DLLを作成しました。 REGSVR32で登録して正常に利用できていますが、 レジストリを使わないで動かしたいと思っています。 フリーソフトではレジストリを使わないで動かせるものがありますが、あのようにするにはどうすればよいのでしょうか。 基本的には、exeファイルとdllファイルを同じフォルダへ置いて動けば良いと思っています。 調べるとLoadLibraryを使えば出来そうに書かれていますが、ご存知の方アドバイスを宜しくお願い致します。