none
exeと同じフォルダにdllを配置しても「指定されたモジュールが見つかりません」のエラーになる。 RRS feed

  • 質問

  • バージョン:Visual Studio 2010

    言語:Visual Basic

    .Net Framework 4.0

    開発環境:Windows XP Professional (32bit)

    配布環境:Windows XP Professional (32bit)

    上記環境でSQLiteを用いたデータ管理ソフトを作成しました。

    SQLiteとのやりとりは、別途自作のプロジェクト(SQLiteDBAccess)を作成しており、データ管理ソフトはそのプロジェクトを参照しています。

    ビルドすると、SQLiteDBAccess.dllとSystem.DB.SQLite.dllとsqlite3.dllが一緒に出来上がるようになっています。

    開発環境では問題なく動作しますが、配布環境へコピーしたりインストールしたりしても、以下のエラーが発生します。

     could not load file or assembly 'system.data.sqlite.dll' or one of its dependencies

    使用しているdllのバージョンは、1.0.81.0ですが、例えばexeフォルダ内のdllを1.0.76.0に置き換えると。

     Could not load file or assembly 'system.data.sqlite.dll,Version=1.0.81.0, Culture=neutral,PublicKey Token=db937bc2d44ff139' or one of dependencies. The located assembly's manifest definition does not match the assembly reference.

    というエラーに変化するので、そのdllを見れていないわけでは無いようです。

    開発環境と配布環境の違いは、

     ・開発環境にはVisual Studio 2010がインストールされている。

     ・開発環境にはネット上で入手したsqlite-netFx40-setup-bundle-x86-2010-1.0.81.0.exeがインストールされている。

    上記のことから、一度配布環境に後者(sqliteの開発環境)のインストールを試したところ、配布環境でも動作するようになりました。

    ただ、sqliteの開発環境はインストールせずにexeとdllの配布で動作させたく、

    dllをsystem32に入れるようにしたり、AnyCpu<>x86に変更してみたりと、いろいろと試しているのですがどうしてもエラーが出てしまいます。

    エラーの原因や対処方、分かりましたらお願いします。

    2012年6月28日 3:03

回答

すべての返信

  • 実行環境に C++ Runtime がセットアップされていないのでは?(sqlite3.dll に必要)

    http://www.microsoft.com/ja-jp/download/details.aspx?id=5555

    ダウンロードされている sqlite-xxxx-2010-xxx.exe は上記のランタイムが必要でファイルサイズが小さいバージョンです。static link バージョンならファイルサイズが大きいかわりに上記は必要ないです。

    • 編集済み K. Takaoka 2012年6月28日 5:00
    • 回答としてマーク Camui 2012年6月28日 5:14
    2012年6月28日 4:58
  • K. Takaoka様

    教えていただいたC++ Runtimeをインストールしたところ、あっさり動きました。


    また、VisualStudio上での設定などの問題かと思い込んでおりましたが、

    結果としてSQLiteの問題であったということになり、ここでの質問は場違いであったかもしれません。

    申し訳ありません。

    大変助かりました。ありがとうございました。

    2012年6月28日 5:21
  • 解決済みですが追記しておきます。

    一旦C++ Runtimeのインストール前の状態に戻しまして、

    教えていただいた「static link バージョンならファイルサイズが大きいかわりに上記は必要ないです。」も試してみました。

    問題無く動くことが確認できました。

    2012年6月28日 6:03