2015-06-07 39 views
1

我使用下面的代码来创建一个Berkeley DB的,但我在最后一行收到错误:如何使用.Net创建伯克利数据库?

为“BerkeleyDB.Internal.libdb_csharpPINVOKE”的类型初始值引发异常。

代码:

Dim DB As DatabaseEnvironment 
Dim Config As DatabaseEnvironmentConfig 

Config = New DatabaseEnvironmentConfig 
Config.Create = True 

DB = DatabaseEnvironment.Open("d:\database.db", Config) 

有谁知道我做错了吗?

我使用VB快递2010与.NET Framework 4.0

完整的堆栈:

System.TypeInitializationException: The type initializer for 'BerkeleyDB.Internal.libdb_csharpPINVOKE' threw an exception. ---> 
System.TypeInitializationException: The type initializer for 'SWIGStringHelper' threw an exception. 
System.DllNotFoundException: Unable to load DLL 'libdb_csharp61': Le module spécifié est introuvable. 
(Exception from HRESULT: 0x8007007E) at BerkeleyDB.Internal.libdb_csharpPINVOKE.SWIGStringHelper.SWIGRegisterStringCallback_libdb_csharp(SWIGStringDelegate stringDelegate) 
at BerkeleyDB.Internal.libdb_csharpPINVOKE.SWIGStringHelper..cctor() 
in C:\carol\db-6.1.23\lang\csharp\src\Internal\libdb_csharpPINVOKE.cs:line 29  
--- End of inner exception stack trace ---  
at BerkeleyDB.Internal.libdb_csharpPINVOKE.SWIGStringHelper..ctor()  
at BerkeleyDB.Internal.libdb_csharpPINVOKE..cctor() 
in C:\carol\db-6.1.23\lang\csharp\src\Internal\libdb_csharpPINVOKE.cs:line 33  
--- End of inner exception stack trace ---  
at BerkeleyDB.Internal.libdb_csharpPINVOKE.new_DB_ENV(UInt32 jarg1)  
at BerkeleyDB.Internal.DB_ENV..ctor(UInt32 flags) 
in C:\carol\db-6.1.23\lang\csharp\src\Internal\DB_ENV.cs:line 276  
at BerkeleyDB.DatabaseEnvironment..ctor(UInt32 flags) 
in C:\carol\db-6.1.23\lang\csharp\src\DatabaseEnvironment.cs:line 174  
at BerkeleyDB.DatabaseEnvironment.Open(String home, DatabaseEnvironmentConfig cfg) 
in C:\carol\db-6.1.23\lang\csharp\src\DatabaseEnvironment.cs:line 2705  
at WindowsApplication1.Form1.Form1_Load(Object sender, EventArgs e) 
in C:\Documents and Settings\Steven\Local Settings\Application Data\Temporary Projects\WindowsApplication1\Form1.vb:line 13" 
+1

欢迎来到堆栈溢出!与论坛网站不同,我们不使用“谢谢”或“任何帮助表示赞赏”,或在[so]上签名。请参阅“[应该'嗨','谢谢',标语和致敬从帖子中删除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be从这个帖子中删除) –

+0

运行这个帐户的帐户可以访问该文件夹吗? –

+2

每当你询问一个未处理的异常时,你应该发布完整的异常,你可以通过将它复制到调试器中的剪贴板来实现,或者如果你没有使用调试器,你可以(暂时)在你的代码中放一个try/catch:'try {/ *你的代码* /} catch(Exception ex){Console.WriteLine(ex.ToString()); Console.ReadLine(); throw;}'或者使用'MessageBox.Show(ex.ToString())'或者等价物,只要发布'ex.ToString()'的结果。 –

回答

0
  1. 确保您的.NET项目设置为.NET 4.0
  2. 建设成为x86
  3. libdb_csharp61.dll在您的/ bin/debug文件夹中