EXE の共有 DLL が不足しているときの挙動

お客様のところに持って行ったアプリが動かなくて焦ったことの反省を書いておきます。

経緯

  • Debug, Release 版それぞれの Windows EXE ファイルを作成。
  • EXE はシステム DLL の他、sqlite3.dll にも依存
  • VC++ Redistributable DLLs はクライアントにインストール済み

現象

プログラムを起動しようとするも、うんともすんとも言わず、コマンドプロンプトに戻ってしまう。

疑ったこと

  • VC++ Redistritbutable DLLs がちゃんと入っていないのでは?
    →そんなことはなかった。試しに Hello, world プログラムは実行される。
  • Windows11 で作成したプログラムを Windows 10 で動かしたからでは?
    →Hello, world 動くのでこれも違う。
  • VC++ Redistrubutable DLLs 以外に必要な DLL があるのでは?
  • パターン1: 未知のシステム DLL があるのでは?
    →MS のサイトを見る限り、そんなことは書いていない。
  • パターン2: 自分が導入した DLL が足りていないのでは?
    →ビンゴ!Release ディレクトリに sqlite3.dll がなかった!!

振り返ってみれば単純な理由ですが、ここまでたどり着くのに1時間半かかりました。。

Linux だと不足している so を表示してくれたりしますが、Windows はエラーも何もなく終了してしまうので困った。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です