10
VB.netでプログラムを開発していますが、System.Data.SQLiteのプリコンパイルされたバイナリを.NET用に使用していますが、x64アーキテクチャーでは機能しません。ファイル。x86/x64アーキテクチャ用のSQLite dll
System.BadImageFormatException:
Could not load file or assembly 'System.Data.SQLite, Version=1.0.65.0, Culture=neutral,
PublicKeyToken=db937bc2d44ff139' or one of its dependencies. An attempt was made to load a program with an incorrect format.
File name: 'System.Data.SQLite,
Version=1.0.65.0,
Culture=neutral,
PublicKeyToken=db937bc2d44ff139'
多分一つだけのDLLを使用する方法があります:
- が#IFDEFがまたは他のx64コード(x86のは、いくつかのコードの一部を含む)のようないくつかのディレクティブを追加しますが
- のdllに参加1つだけを作る。
- リファレンスはVB.net
でこのDLLは、私はx64の1つだけのコンパイルではなく、X32用とその他をしたいと思いとして、他のより良いアイデアだと思いますか。例えば
(32ビット):
Private Shared Sub OpenConection(ByRef Conn As SQLite.SQLiteConnection)
Conn = New SQLite.SQLiteConnection("Data Source=" & System.Environment.CurrentDirectory & "\database.db")
Conn.Open()
End Sub
Private Shared Sub CloseConection(ByRef Conn As SQLite.SQLiteConnection)
Conn.Close()
Conn.Dispose()
Conn = Nothing
End Sub
Public Shared Function ReturnSelect(ByVal DataTAbleName As String, ByVal sQuery As String, ByVal sWhere As String) As Data.DataTable
Dim lDT As New DataTable
Dim lTA As New SQLite.SQLiteDataAdapter
If DataTAbleName Is Nothing Then Return New DataTable(DataTAbleName)
Try
OpenConection(conexion)
lTA = New SQLite.SQLiteDataAdapter("SELECT " & sQuery & " FROM " & DataTAbleName & IIf(sWhere <> String.Empty, " WHERE ", "") & sWhere, conexion)
lTA.Fill(lDT)
Catch ex As Exception
Throw ex
Finally
CloseConection(conexion)
lTA.Dispose()
lTA = Nothing
End Try
Return lDT
End Function
64ビットアーキテクチャ上で動作するようにそれを変更する方法は? はたぶん32と64のdllのと機能の両方を含む
Try
Instance = Me
'Check If Homidom Run in 32 or 64 bits
If IntPtr.Size = 8 Then _OsPlatForm = "64" Else _OsPlatForm = "32"
'continue code
Catch ex As Exception
' ex.Message
End Try