Я не знаю, чому це ще не включено, але мені довелося провести дослідження і дізнатися це для себе, тому, сподіваюся, хтось знайде цю відповідь і врятує неприємності. Це було для програми WPF. Він добре працював на моїй скриньці Dev, але не працював на комп’ютері, де я його копіював, і отримала Unable to load DLL 'SQLite.Interop.dll'
помилку. Я переніс усі пов'язані з цим каталоги та файли безпосередньо зі своєї папки "Налагодження" на цей інший комп'ютер, коли отримав таку ж помилку, що і ОП, коли запускав її. Мою папку "бін", яка містила мої DLL, було скопійовано у "Налагодження \ бін", і всі вони були включені разом із файлами моїх додатків, коли я робив копіювання на інший комп'ютер за допомогою цього шляху, тому в ньому не було відсутні файли.
Те, що я бачив, говорилося в інших відповідях, які не стосуються:
- Я не використовував пакет NuGet або не потребував створення папок x86 або x64, схоже, що NuGet створює. Мої DLL (System.Data.SQLite та SQLite.Interop.dll, разом із System.Data.SQLite.config) знаходяться у папці "bin" у моєму проекті та були скопійовані вручну (створити папку "bin" у Explorer Solution Explorer у VS, вставте DLL-файли в цю папку в Провіднику Windows, використовуйте Додати> Існуючий елемент для введення файлів у папку / проект VS). Потім я посилаюсь на них як посилані збори в своєму проекті, використовуючи це місце ("Посилання"> "Додати довідку", і перейдіть до одного, промийте, повторіть для решти). Це гарантує, що мій проект точно знає, де вони знаходяться.
- Мені не потрібно було посилатися на жоден файл DLL SQLite у своєму app.config або навіть торкатися мого файлу MyProject.csproj.
- Мені навіть не потрібно було вказувати конкретний процесор! Модель мого проекту призначена для "Будь-якого процесора", хоча я маю лише змішані або 64-бітні DLL-файли і працюватимуть лише в ОС Windows 7+, які мають 64-бітні ОС. (без x86 / 32-бітових виключно DLL-файлів)
- Я вже визначав їх як "Вміст" та "Скопіювати, якщо новіші" для цих DLL, коли я відчув помилку ОП.
Що я знайшов, це це з https://system.data.sqlite.org/index.html/doc/trunk/www/faq.wiki#q20 :
(11) Чому я отримую DllNotFoundException (для "sqlite3.dll" або "SQLite.Interop.dll"), коли намагаюся запустити свою програму?
Або названа бібліотека динамічних посилань (DLL) не може бути розміщена, або не може бути завантажена через відсутність залежностей. Переконайтесь, що названа бібліотека динамічних посилань знаходиться в каталозі додатків або в каталозі уздовж системи PATH та повторіть спробу. Крім того, переконайтесь, що встановлений необхідний перерозподільний пакет для перегляду Visual C ++, якщо ви не використовуєте бібліотеку динамічних посилань, яка була статично пов'язана з нею.
Наголос на моїй жирній частині всередині абзацу. Цільовий комп'ютер був свіжим і не мав завантажених програм, крім .NET 4.0. Після того, як я встановив C ++, він зміг виконати команди на SQLite. Це повинно було бути одним із перших поширених запитань та частиною необхідних умов, але його поховали в №11. Мій комп'ютер для розробки вже завантажив, тому що він постачався разом із Visual Studio, тому він там працював.
Завантажте:
перерозподілюваний Visual C ++ для Visual Studio 2015:
https://www.microsoft.com/en-us/download/details.aspx?id=48145
Оновлення 3 (сукупне оновлення):
https://www.microsoft.com/en-us/download/details.aspx?id=53587