「sqlite3.dllから見つかりませんでした。」の解決法


先ほど、私の父の使用しているパソコンから何かエラーが出るということで、それを解決したときのお話です。

パソコンが起動したあと、すぐにこういったエラーメッセージがでました。

『プロシージャ エントリ ポイント sqlite3_wal_checkpointがダイナミック リンク ライブラリ sqlite3.dllから見つかりませんでした』

ウインドウの名前は『AppleSyncNotifier.exe エントリーポイントが見つかりませんでした。』です。

※父のパソコンゆえウインドウをキャプチャするのを忘れてしまいました・・・

iTunesのアップデートをしたらこのエラーがでてしまったとか。「AppleSyncNotifier.exe」とは、どうやらiPhoneやiPodなどの製品とパソコンを接続する際に使用されるプログラムのようです。このプログラムがパソコン起動と同時に「sqlite3.dll」というファイルが見つからないと言ってきたわけです。

今回の記事は、この解決法を書きます。

※2011年9月27日 改訂 もう少し色々調べたらいくつか解決方が見つかったので書き直し。
※2011年10月16日 改訂 コメントからの情報を反映
※2012年3月30日 改訂 dllファイルの保存場所に関する追記

解決法1

一応アップルの正式な解決法はこちらのようです。まずはこれをお試しください。

まずは以下のソフトウェアをすべてアンインストールします。コントロールパネルの「プログラムの追加と削除(XP)」「プログラムと機能(Vista,7)」でアンインストールできます。

  1. iTunes
  2. Quick Time
  3. Bonjour
  4. Apple Software Update
  5. Apple Mobile Device Support
  6. Apple Application Support

○Windows Vista または Windows 7 での iTunes、QuickTime、その他のソフトウェアコンポーネントの削除および再インストール – Apple
http://support.apple.com/kb/HT1923?viewlocale=ja_JP&locale=ja_JP

○Windows XP での iTunes、QuickTime、その他のソフトウェアコンポーネントの削除および再インストール – Apple
ttp://support.apple.com/kb/HT1925?viewlocale=ja_JP (リンク切れ)

アンインストールで曲情報や認証情報などは消えないようですが、一応バックアップすることをお勧めします。

○iTunes: プレイリストのバックアップ方法とリストア方法
http://support.apple.com/kb/TA47831?viewlocale=ja_JP

○iTunes でメディアをバックアップする
http://support.apple.com/kb/HT1382?viewlocale=ja_JP

次にパソコンを再起動します。ここでまたエラーがでる場合があるようですが、無視していいようです。

AppleのWebサイトから最新のiTunesをダウンロードし、インストールします。とくにチェックボックスなどで特別な操作は必要ありません。

最後に再起動すれば必要なファイルがすべて入り正常な状態へ戻ります。

解決法2

コメントからの情報を受け再調査。感謝です。(※2011年10月16日追記)

MobileMe コントロールパネル(MobileMe Control Panel)の削除、または再インストール

「AppleSyncNotifier.exe」は MobileMe コントロールパネル が使用しているプログラムのようです。なので、必要なければこれを削除、または再インストールすることで問題が解決する場合があるようです。

削除法、再インストール方法はAppleの公式サイトで紹介されています。

解決法3

プロセスとサービスの終了

まず、タスクマネージャーの「プロセス」タブから「iTunesHelper.exe」を、「サービス」タブから「Apple Mobile Device」を終了させます。タスクマネージャーについては以下を参考にどうぞ。

「sqlite3.dll」のダウンロード

以下のサイトから「sqlite3.dll」をダウンロードします。

○SQLite
http://www.sqlite.org/download.html

リンク先のページにある「Precompiled Binaries For Windows」の「sqlite-dll-win32-x86-3070701.zip」をクリックしてダウンロードしてください。

ファイルはZIP圧縮されています。解凍処理をして中身を取り出しましょう。「解凍ってなに?」という方は以下のページを参考にどうぞ。

ブログ内リンク:第12回 ファイルやフォルダの圧縮と解凍をフリーソフトでやってみよう

解凍すると「sqlite3.def」と「sqlite3.dll」のふたつのファイルがでてきます。「sqlite3.def」はいらないので、「sqlite3.dll」の方を以下のフォルダの中にコピーしてください。

  • C:\Program Files\Common Files\Apple\Apple Application Support
  • C:\Program Files\Common Files\Apple\Mobile Device Support

コピー後、再起動すればOKです。

解決法4

「sqlite3.dll」のダウンロード

以下のサイトから「sqlite3.dll」をダウンロードします。

○SQLite
http://www.sqlite.org/download.html

リンク先のページにある「Precompiled Binaries For Windows」の「sqlite-dll-win32-x86-3070701.zip」をクリックしてダウンロードしてください。

ファイルはZIP圧縮されています。解凍処理をして中身を取り出しましょう。「解凍ってなに?」という方は以下のページを参考にどうぞ。

ブログ内リンク:第12回 ファイルやフォルダの圧縮と解凍をフリーソフトでやってみよう

解凍すると「sqlite3.def」と「sqlite3.dll」のふたつのファイルがでてきます。「sqlite3.def」はいらないので、「sqlite3.dll」の方を以下のフォルダ内にコピーし再起動してください。

※よく分からない、入れてみたけど直らない場合は両方に入れてみてください。どちらかで正しく読み込まれます。

32bit版OSの場合は「C:¥Windows¥System32」
64bit版OSの場合は「C:¥Windows¥SysWOW64」

注意点

プログラムが最終的に「sqlite3.dll」を参照する場所がここです。なので、他のプログラムもこの「sqlite3.dll」を参照する場合があります。このとき、「sqlite3.dll」のバージョンの不一致が起こるとバグが発生する場合があります。

本来は参照しようとするプログラム周辺に「sqlite3.dll」はあるべきなのでこの方法は最後の手段として実行してください。

32bitと64bitで入れるフォルダが異なる理由

上記のページでダウンロードできる「sqlite3.dll」は32bit版OS用のものです。

64bit版OSで起動する32bit版アプリケーションは、dllをSystem32以下のフォルダから探そうとしますが、ここには64bit版用のdllも含まれているので正しく読み込めない場合があります。

そこで、dllを探しにきた32bit版アプリケーションは、自動でSysWOW64内を探すように指示(リダイレクト)されます。
SysWOW64フォルダ内には64bit版OSで32bit版アプリを動かすために必要なものが入っています。

このように64bit版OSで32bit版アプリを動かすための機能を「WOW64」といいます。
なぜこのような機能が必要なのかは、以下の記事を参考にどうぞ。

ブログ内リンク:第10回 Windowsの32bit/64bitの違い

お詫び

記事を改訂した理由ですが、以前紹介した方法(解決法4)は「最後の手段」として用いられるべきもので「推奨される方法」ではなかったからです。

「sqlite3.dll」を「C:\Windows\System32」に入れると、確かに一時的には解決しますが、他のプログラムが「sqlite3.dll」のバージョンの不一致によってバグを発生させる場合があるようです。

ここら辺のことを調査不足で知らなかったので改めてしっかり調べ書き直しました。解決法4でも問題は解決しますし、絶対に不具合がでる訳ではないのですが(恐らく出る方が希だと思います)、推奨される方法ではなかったことをここでお詫び申し上げます。

以前、解決法4を実行した方は解決法1をお試しください。

あとがき

他にも同じようにこのエラーがでたという方を多く見かけました。エラーを出すプログラムによって原因は様々なのですが、今回の「AppleSyncNotifier.exe」から出た場合は、iTunesのアップデートが原因である可能性が高いです。全員がこの症状になるわけではありませんが、もしエラーを出したら参考にしてください。

ところでSQLiteってなに?

データベース管理システムのひとつです。
データベースというのは、あるテーマに沿ったデータを集めて、他のソフトウェアなどが容易にデータを取り出せるように管理したものをいいます。社員や学生の名簿なども「名簿」というテーマに沿った一種のデータベースです。

データベース管理システムは、このデータベースを管理するためのシステムやソフトウェアのことを指します。

データベース管理システムには、SQLiteの他にも「MySQL」「PostgreSQL」などの種類があります。
SQLiteは軽量のデータベースであるため、アプリケーションなどに組み込んで利用されます。中規模、小規模のデータベースを扱います。「sqlite3.dll」はSQLiteに関連するファイルです。

「ダイナミックリンクライブラリ」は、プログラムが実行されるときに呼び出されるライブラリです。DLLファイルといえば聞いたことあると思います。私もあんまり詳しくないので知りたいという方は詳細を検索してください。