2013-10-16 176 views
3

我有一段時間讓我的測試對我的SQLite數據提供程序運行。無法加載DLL'sqlite3':無法找到指定的模塊

我看過建議的鏈接here on stackoverflow,但他們都沒有讓我走上正確的道路。

我已經下載了的Windows Precompiled Binaries for sqlite3.dll

我複製sqlite3.dll到我的兩個Sqlite\bin目錄以及我Tests\bin目錄 dll copied into bin directories

不幸的是,當我運行我的測試中,我得到的以下錯誤

failed test

是否有一個明確的方式來獲得這方面的工作都在我的Windows開發環境(現在的主要目標)以及在Android和IOS(不久的將來)需要運行?

另外,如果它很重要,這裏是我的Sqlite項目引用。

enter image description here

+2

在我看來,程序集需要駐留在輸出目錄中,而不是'bin'目錄。 –

+0

您正在使用「複製本地」(dll屬性)爲true? –

+0

將dll移動到bin \ debug目錄會產生一個新的錯誤System.BadImageFormatException:嘗試加載格式不正確的程序。 (從HRESULT異常:0x8007000B)'看起來它必須與x86/x64 –

回答

5

所以我的答案很簡單。我連接了一個Pre-Build事件,用於檢查機器的體系結構,並將相應的dll複製到輸出bin目錄中。

現在我們團隊中的任何人都可以簡單地運行REBUILD,並且適當的dll將可用於對SQLite運行。

if '$(PROCESSOR_ARCHITECTURE)'=='AMD64' (xcopy /y "$(ProjectDir)x64\sqlite3.dll" ".\") 
if '$(PROCESSOR_ARCHITECTURE)'=='x86' (xcopy /y "$(ProjectDir)x86\sqlite3.dll" ".\") 
if '$(PROCESSOR_ARCHITEW6432)'=='AMD64' (xcopy /y "$(ProjectDir)x64\sqlite3.dll" ".\") 
0

不能把這個意見,所以這裏是我得到的:enter image description here

而且,看看Similar problem

最後但並非最不重要的是,您是否嘗試添加對SQLite.Inetrop.dll(在引用中)的引用? 參考 - >添加 - >只是瀏覽到你的SQLite的位置,選擇查看全部,並添加一個對Interop.dll的引用以及)

+0

我的項目無法直接使用dll的nuget。我們使用了不同版本的Mono.Data.Sqlite,並且sqlite3.dll不能在項目中引用,因爲它不是.net dll。 –

+1

您無法使用引用 - >添加來添加SQLite.Interop.dll。這是因爲SQLite.Interop.dll是非託管的,因此無效。 – sapbucket

2

當我添加了以下庫的錯誤走

  1. 微軟的Visual C++運行時包(V11.0)
  2. SQLite,讓Windows運行時(V3.8.7.1)

When I add the following libraries the error went away

0

我正在使用VS2017,並通過添加以下任務複製程序集。

<Target Name="Ensure SQLite assemblies copied" AfterTargets="Build" Condition=" '$(Platform)' == 'x64' "> 
    <Copy SourceFiles="$(OutDir)x64\SQLite.Interop.dll" DestinationFolder="$(OutDir)" /> 
</Target> 
相關問題