7

の指示に従うだけです

SQLite-on-Visual-Studio-with-NuGet-and-Easy-Instructions

サンプルの C# アプリケーションをコンパイルできます。

「任意のCPU」

オプション。

しかし、アプリケーションを実行するときに、選択した場合

「32ビットを好む」

オプション、私のアプリケーションのクラッシュ:

「DLL "SQLite.Interop.dll" を読み込めません

「32 ビット優先」オプションのチェックを外すと、64 ビット マシンで問題なく動作します。

なぜこれが起こるのですか?それを修正するための提案はありますか?

PS:私は 64 ビットの Windows 8 を使用しています。SQLite 用に [x86] および [x64] フォルダーを提供しています。

PS 1: エラー:

System.TypeInitializationException: 'System.Data.SQLite.SQLiteFactory' の型初期化子が例外をスローしました。---> System.DllNotFoundException: DLL 'SQLite.Interop.dll' を読み込めません: 指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E) System.Data.SQLite.UnsafeNativeMethods.sqlite3_config_none(SQLiteConfigOpsEnum op) で System.Data.SQLite.SQLite3.StaticIsInitialized() で System.Data.SQLite.SQLiteLog.Initialize() で System.Data. SQLite.SQLiteFactory..cctor() --- 内部例外スタック トレースの終わり --- System.Data.SQLite.SQLiteFactory..ctor() で

PS3:

面白いことに気づきます。ビジュアルスタジオではクラッシュしますが、プログラムexeを実行すると、クリックするだけで機能します。

4

1 に答える 1

3

管理者としてコマンド プロンプトを実行します。 cdx64 .dll を含むディレクトリに移動します。次に、次のように入力しますgacutil -i SQLite.Interop.dll。次にcd、x86 .dll のあるディレクトリに移動します。もう一度入力してください: gacutil -i SQLite.Interop.dll. これで正しく動作するはずです。

これが行うことは、各アセンブリをシステムの GAC (グローバル アセンブリ キャッシュ) にインストールすることです。コンパイル方法(x86またはx64)に応じて、適切なシステムキャッシュディレクトリにそれらを配置します。これは、デバッグ目的でのみ使用してください。

GAC 32 ビット対 64 ビット

クライアント マシン用。x86 と x64 のそれぞれに対して展開を行います。もちろん、それぞれに適切なバージョンの .dll を投入してください。

于 2013-07-24T14:25:22.180 に答える