私はSystem.Data.SQLiteのダウンロード page を見ています。これには、.NET 4の混合モードアセンブリと通常のアセンブリ(私はそう思います)がリストされています。このライブラリを使用する私のプロジェクトはすべてx86にコンパイルされる.NET 4です。
2つの質問があります。
http://msdn.Microsoft.com/en-us/library/x0w2664k.aspx
1)常に最初にmsdnを確認します。混合モードは、アセンブリがマネージコードとアンマネージコードを実行できることを意味します。
2)32ビットWindowsのセットアップ(.NET Framework 4.0)
http://system.data.sqlite.org/sqlite-netFx40-setup-bundle-x86-2010-1.0.74.0.exe
「このライブラリを使用する私のプロジェクトはすべて.NET 4であり、x86にコンパイルされます。」
純粋なILから混合モードアセンブリを生成する方法があります。リフレクションを使用してアセンブリを作成する最後の部分には、 AssemblyBuilder.Save の呼び出しが含まれます。 portableExecutableKinds.Required32BitをportableExecutableKind引数に渡すだけの場合は、混合モードのアセンブリを作成します。 PortableExecutableKinds.ILOnlyも渡すことで、この問題を回避できます。つまり.
Assembly_bldr.Save(exe_name, PortableExecutableKinds.Required32Bit | PortableExecutableKinds.ILOnly, ImageFileMachine.I386 );
言うまでもなく、この情報は大変なものでした...
公式から引用 [〜#〜] faq [〜#〜]
(14)混合モードアセンブリとは何ですか?
混合モードアセンブリは、特定のプロセッサアーキテクチャ用のマネージコードとネイティブコードの両方を含むダイナミックリンクライブラリです。ネイティブコードが含まれているため、コンパイル対象のプロセッサアーキテクチャと一致するプロセスにのみロードできます。このStackOverflowの質問もご覧ください。
それもこの質問を参照しています!
SQLiteの場合、バンドルにはSystem.Data.SQLite
の混合モードアセンブリが含まれています。ただし、デフォルトのパッケージには2つの個別のアセンブリが含まれています。1つは完全にネイティブで、もう1つは完全に管理される相互運用アセンブリです。
SQLiteサイトには、実際には [〜#〜] faq [〜#〜] があります。
(15)「バンドル」パッケージとは何ですか(ダウンロードページから)。
ダウンロードページにリストされている「バンドル」パッケージには、個別の「System.Data.SQLite」ではなく、「System.Data.SQLite.dll」という名前のファイル(質問#14を参照)にSystem.Data.SQLite混合モードアセンブリが含まれています。マネージコードとネイティブコードをそれぞれ含むdll "ファイルと" SQLite.Interop.dll "ファイル。
そして以前のFAQ:
(14)混合モードアセンブリとは何ですか?
混合モードアセンブリは、特定のプロセッサアーキテクチャ用のマネージコードとネイティブコードの両方を含むダイナミックリンクライブラリです。ネイティブコードが含まれているため、コンパイル対象のプロセッサアーキテクチャと一致するプロセスにのみロードできます。こちらもご覧ください StackOverflowの質問 。
私の調査に基づく 、バンドルされていないフォームが利用できるため、マネージコード(C#など)でP/Invoke
を使用して、アンマネージコードを呼び出すことができます [ 〜#〜] ijw [〜#〜] 。 IJWは 魔法のように優れている であり、C++プログラムをこのような個別のマネージDLLとアンマネージDLLにコンパイルするメカニズム(P/Invoke
も適用される)は 非推奨 以降VS 2015では、SQLiteの新しいバージョンでは、バンドルされていないパッケージが削除される可能性があります。
私は前の段落に何かの直接の証拠がないので、私の研究を再確認する必要があります。これが私の研究です: