DllNotFoundException for SQLite.Interop.dll (C# & SQLite)

14,350

Solution 1

Dohh...

I was probably using a wrong System.Data.SQLite.dll.

For anyone who is interested you can find the new .dll file I downloaded here: http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

I needed the .dll for the 4.5 Framework (x86); I clicked the first download link.

Also I am using just the System.Data.SQLite.dll, no other files!

Hope this answer helps someone else. :-)

Solution 2

Copy the SQLite.Interop.dll file into your debug folder. For example "Projects\sqlite test18\sqlite test18\bin\Debug" place it here.

And dont add the Interop as a reference.

Add only these references

  • System.Data.SQLite
  • System.Data.SQLite.EF6
  • System.Data.SQLite.EF6

This solved my problem. And I was using Sqlite x86 under x64 OS.

Share:
14,350
rotgers
Author by

rotgers

Updated on June 27, 2022

Comments

  • rotgers
    rotgers almost 2 years

    I'm trying to get SQLite running in Visual Studio 2012 for C#. However after going through a set of tutorials I still get the error DllNotFoundException for the SQLite.Interop.dll.

    This is the full error I receive:

    Unable to load DLL 'SQLite.Interop.dll': The specified path is invalid. (Exception from HRESULT: 0x800700A1)

    I have created a reference for the System.Data.SQLite.dll. Now I found that I have to add the SQLite.Interop.dll file into my project folder but I still get this error.

    Oh and BTW, this is my code, if anyone is interested:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    using System.Data.SQLite;
    
    namespace SQLiteWinFormCS
    {
    public partial class Form1 : Form
    {
    
        private SQLiteConnection _sqlCon;
        private SQLiteCommand _sqlCmd;
        private SQLiteDataAdapter _db;
        private DataSet _ds = new DataSet();
        private DataTable _dt = new DataTable();
        private string _dbPath = String.Empty;
    
        public Form1()
        {
            InitializeComponent();
        }
    
        private void uiOpenDB_Click(object sender, EventArgs e)
        {
            Console(String.Format("You clicked {0}.", ((Button)sender).Name));
            this._dbPath = uiDatabaseFilepath.Text;
            Console("Filepath to DB = " + this._dbPath);
    
            Console("Attempting to open DB connection...");
            this._sqlCon = new SQLiteConnection(String.Format("Data Source={0};", @"\\Some-PC\ISC\Databases\testdbs\test.db3")); // << ERROR
            Console("DB connection succesfull!");
    
        }
    
        private void Console(string text)
        {
            uiConsoleOutput.AppendText(text);
            uiConsoleOutput.ScrollToCaret();
        }
    }
    }
    

    Can anyone help me get this thing working?

    Thanks in advance.