「なでしこv1」開発掲示板

なでしこv1のバグや要望を書き込む掲示板
[一覧へ] > (@135) [高] [解決]
@135■ (#332) gnako実行ファイルでレジストリ操作できなくなりました。 - choco (2008-12-03 15:27) /高 未処理
【症状】gnako形式でEXEにしてから、実行するとエラー。
(プロシージャエントリポイントASN1_const_check_infinite_endがダイナミックリンクライブラリ libeay32.dllから見つかりませんでした。)

【再現方法】サンプルソース、再現手順など
#------------------ここから。
メルアドとは文字列

GET_ADDRESS
メルアドを言う。
終わる。
●GET_ADDRESS
 KEY一覧とは文字列
 メルアド=「」

 「HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts」のレジストリ開いてHに代入。
 KEY一覧=Hでレジストリキー列挙
 Hのレジストリ閉じる
 KEY一覧を反復
  「HKEY_CURRENT_USER\Software\Microsoft\Internet Account Manager\Accounts\{それ}」のレジストリ開いてHに代入。
  エラー監視
   Hで「SMTP Email Address」をレジストリ読む。
   もし(それ=空)でなければ
    それをメルアドに代入//
    Hのレジストリ閉じる。
    抜ける。

  エラーならば
   Hのレジストリ閉じる。
 戻る。
#--------------------ここまで。

【要望】エラーにならないようにして下さい。
【バージョン】1.512プロ版
【その他】

(#334) ssleay32.dllの問題? - パソコン大好き (2008-12-03 18:31) /高 未処理
プラグインパスにssleay32.dllがあり、libeay32.dllが見つからないときに同様のエラーがでるようです。
(プロシージャエントリポイントBIO_clear_flagsがダイナミックリンクライブラリlibeay32.dll から見つかりませんでした。 )
ただエラー内容も少し違うので、今回の件とは関係ないかもしれません。

【再現方法】
(1)ランタイムパスからlibeay32.dllを取り除く。(ssleay32.dllはそのまま)
(2)適当なソース(空でも可)を任意のランタイムに実行させる。
するとどのランタイムでも上のエラーが出ます。

どうやらssleay32.dllがlibeay32.dllを静的リンクしていることが原因らしいです。
なでしこはプラグインパスにDLLを見つけたとき、なでしこのプラグインかを確かめます。
そのときssleay32をロードすると、ssleay32がlibeay32.dllをロードしようとして例のエラーが出るようです。

(#336) 再現性 - クジラ飛行机 (2008-12-03 20:41) /高 未処理
やってみましたが、再現しませんでした。
何か別の要因があるのかもしれません。

(#337) SSL関連のDLLは2つをセットに - クジラ飛行机 (2008-12-04 10:36) /高 未処理
私がテストしている間に、パソコン大好きさんが原因を考えて返答されていますね。
SSL関連のDLLは2つをセットにして使うようにしてください。

(#340) 違います。 - choco (2008-12-04 21:27) /高 未処理
パスが全然通ってない場所にEXEを置いて実行してみましたが、状況は変わりません。
基本的に、そのDLL使ってませんので^^;

(#343) なでしこと無関係では? - SWinX (2008-12-05 10:56) /高 確認待ち
パソコン大好きさんの指摘をよく読むとわかるように
「なでしこ特有の問題ではありません」chocoさんの環境側の問題です。

"libeay32.dll"でググルと
http://q.hatena.ne.jp/1152880907
のようなトラブルシューティングがたくさん見つかります。

> 基本的に、そのDLL使ってませんので
chocoさんの組んだプログラムで明示的に呼び出してはいない
でしょうが、(システムの)どこかで呼び出しているからこそ
"libeay32.dll"という名称がエラー文に出てきているのです。
無関係ということはありえませんよね?

もらったヒントを最大限活かせるようになりたいものです。

(#351) 失礼しました。 - choco (2008-12-07 12:13) /高 解決
"Libeay32.DLL"に関してのトラブルシューティングは見たのですが、該当する部分がなかったのです。
>"システムのどこかで呼び出している"については、おっしゃる通りですね。
なでしこで明示的では無いにしろ、内部で呼び出している可能性があるのかな?と思いここに出したのです。

私が検証したプログラムは上に書いてあるとおりです。
私の使っているマシンのWindows2000ではエラーになりますが、クリーンインストールしたXPではエラー無しで通りました。

まだ検証は終わってませんが、XPで通っているのでこのスレッドは終了とさせて頂きます。
ありがとうございました。

(#332)へ返信する:

👆お手数ですが、いたずら防止のために、「真夏」の読み方を記入してください。

編集時に使うキーを入力(省略可能)

画像ファイル(最大300KB)を添付可能