7

必要な SQLite (および sqlite-net) パッケージと思われるものをアプリに追加しました。ただし、実行すると例外が発生します。

System.DllNotFoundException はユーザー コードによって処理されませんでした HResult=-2146233052 Message=DLL 'sqlite3' を読み込めません: 指定されたモジュールが見つかりませんでした。(からの例外

次の SQLite パッケージがインストールされています。

ここに画像の説明を入力

何が欠けている?

アップデート

私はajawad987の提案を試みましたが、これを持っていても同じ実行時エラーが発生します:

ここに画像の説明を入力

...この:

ここに画像の説明を入力

更新 2

この実行時例外が発生する場所 (SQLite.cs) は、私には奇妙に思えます。

シルバーライトの場合 || USE_CSHARP_SQLITE

        var r = SQLite3.Open (databasePath, out handle, (int)openFlags, IntPtr.Zero);

そうしないと

        // open using the byte[]
        // in the case where the path may include Unicode
        // force open to using UTF-8 using sqlite3_open_v2
        var databasePathAsBytes = GetNullTerminatedUtf8 (DatabasePath);
        var r = SQLite3.Open (databasePathAsBytes, out handle, (int) openFlags, IntPtr.Zero);

終了

しかし、私C#を使用していますが、なぜ失敗している行が実行されているのですか? (「else」ブロックで失敗します)?

4

3 に答える 3

15

プロジェクトのビルドは に設定されていAny CPUますか? x86またはx64SQLite3 用に設定する必要があります。このx86ルートにより、デバイス間の互換性が向上するため、特定の 64 ビットのものを実行しない限り、このオプションをお勧めします。

編集: Sqlite のメイン サイトから実際の Sqlite DLL を手動でダウンロードする必要もあります。必要なファイルの名前はsqlite-dll-win32-x86-3080702.zip. その ZIP から DLL を抽出し、コンテンツ ファイルとしてプロジェクトに追加します。プロパティ ツール ウィンドウの [出力ディレクトリにコピー] オプションを [常にコピー] に設定し、再構築します。また、上記のように、プロジェクトが x86 オプションに設定されていることを確認してください。

これでうまくいくはずです... .NETアプリケーションでSqliteを使用してからしばらく経ちました。

サイド ノート: ダウンロードした Nuget パッケージには、実際には、実際の Sqlite DLL に関する C# ラッパー ライブラリのみが含まれています。

于 2014-12-06T05:28:01.643 に答える
3

私はWindowsストアアプリで同じ問題を抱えていましたが、このチュートリアルに従って解決しました :

dll を手動でダウンロードする必要はありません。重要なステップは 5 番目です。

5. プロジェクトへの参照を追加します。

ソリューションの下のプロジェクトへの参照を右クリックし、[参照の追加] を選択します。これにより、プロジェクトの参照マネージャーが開きます。

Reference Manager で Windows Version をクリックします。私のアプリケーションは Windows 8.1 を対象としているため、「Windows 8.1」を選択しました。前のスクリーン ショットに示すように、リストから [拡張機能] を選択します。これで、プロジェクトに適用可能な SDK のリストが表示されます。画面に表示されているように、Windows ランタイム (Windows 8.1) 用の SQLite は、NuGet パッケージ インストーラーから SQLite をインストールした後のリストで使用できます。

次に、スクリーン ショットに示すように、Windows 8.1 用の Microsoft Visual C++ 2013 ランタイム パッケージと Windows ランタイム (Windows 8.1) 用の SQLite の 2 つのオプションをオン/チェックします。次に、「OK」をクリックします。

参照が追加されているかどうかを確認します。参照が追加されていることがわかりますが、これらの追加された参照には感嘆符が表示されています。ここでアプリケーションをビルドすると、いくつかの警告メッセージとエラー メッセージが確実に表示され、以下に示すようないくつかのメッセージが表示されてビルドが失敗します。これは、インストールした SQLite が「任意の CPU」プロセッサ アーキテクチャをサポートしないためです。

ここで、ターゲット プラットフォームを「任意の CPU」から CPU アーキテクチャに変更します。私の場合、CPU アーキテクチャは x64 です。CPU アーキテクチャを確認する手順を以下に示します。

これがWPFアプリで機能するかどうかはわかりませんが、Windowsストアアプリで機能しました. 詳細とスクリーンショットについては、上のリンクをクリックしてください。

これが何人かの人々を助けることを願っています;-)

于 2015-07-15T14:00:08.267 に答える
1

私の場合、プロジェクト ビルドを x86 または x64 に設定し、ターゲット フレームワークを 4 に設定するだけ済みまし 。上位のフレームワークでは機能しません。

于 2016-10-10T07:42:01.263 に答える